如何使用 select 关键字显示来自 oracle 数据库的记录
How to display record from oracle database using select keyword
我想使用 [=26 在 Java 中显示来自 Oracle 数据库的记录=] 关键字,但它不起作用。当我 运行 程序显示 SQL 命令但不是我想要的结果。
我的代码是这样的:
static void modify()
{
System.out.println("Enter employee ID");
empid=sc.nextInt();
try{
con=Connection1.getConnection();
stmt=con.createStatement();
String d="select * from emp where empid='"+empid+"'";
rs=stmt.executeQuery(d);
System.out.println(""+d);
}
catch(SQLException e)
{
e.printStackTrace();
}
}
当我 运行 应用程序显示此结果而不是数据库中的记录时:
select * from emp where empid='14'
您正在打印 Statement
的 toString()
表示。相反,您应该执行语句(您所做的),并从 ResultSet
.
中获取相关字符串
坦率地说,RestulSet 没有提供最舒适的方式来迭代其列,但它是可行的:
int colCount = rs.getMetaData().getColumnCount()
List<Object> columnValues = new ArrayList<>(colCount);
// Move to the first row
// If your query returns more than one row,
// you'd probably want to iterate over all of them
rs.next();
// Iterate the columns:
for (int i = 1; i <= colCount; ++i) {
list.add(rs.getObject(i));
}
System.out.println ("Record: " + list);
问题是您只是打印结果的名称而不是结果本身。
我已将您的代码更改如下,
static void modify()
{
System.out.println("Enter employee ID");
empid=sc.nextInt();
try{
con=Connection1.getConnection();
stmt=con.createStatement();
String d="select * from emp where empid='"+empid+"'";
rs=stmt.executeQuery(d);
while(rs.next()){
//Getting column value from record by giving column no
System.out.println(rs.getString(1)); //line 1
//Getting column value from record by giving column name,
System.out.println(rs.getString("empid"));// line 2
}
}
catch(SQLException e)
{
e.printStackTrace();
}
}
请注意,上面的代码 (第 1 行) 将打印每条记录的第一列(return 来自数据库),此处returned 列的顺序无法保证。
如果要获取特定列,则可以在 resultSet 的 getString 方法中将列名指定为参数 (第 2 行).
您必须使用适当的方法来获取值,如果第 2 列在数据库中的数据类型为 INTEGER,那么您必须使用 rs.getInt(2)
.
在您的代码中,
System.out.println(""+rs);
In Java 当你在 System.out 中调用 println(Object) 方法时,它会调用 String.valueOf(Object) 方法,它又会调用 toString() 方法,这会return 你的对象的字符串表示,这里只有你传递的查询,而不是记录。
我想使用 [=26 在 Java 中显示来自 Oracle 数据库的记录=] 关键字,但它不起作用。当我 运行 程序显示 SQL 命令但不是我想要的结果。
我的代码是这样的:
static void modify()
{
System.out.println("Enter employee ID");
empid=sc.nextInt();
try{
con=Connection1.getConnection();
stmt=con.createStatement();
String d="select * from emp where empid='"+empid+"'";
rs=stmt.executeQuery(d);
System.out.println(""+d);
}
catch(SQLException e)
{
e.printStackTrace();
}
}
当我 运行 应用程序显示此结果而不是数据库中的记录时:
select * from emp where empid='14'
您正在打印 Statement
的 toString()
表示。相反,您应该执行语句(您所做的),并从 ResultSet
.
坦率地说,RestulSet 没有提供最舒适的方式来迭代其列,但它是可行的:
int colCount = rs.getMetaData().getColumnCount()
List<Object> columnValues = new ArrayList<>(colCount);
// Move to the first row
// If your query returns more than one row,
// you'd probably want to iterate over all of them
rs.next();
// Iterate the columns:
for (int i = 1; i <= colCount; ++i) {
list.add(rs.getObject(i));
}
System.out.println ("Record: " + list);
问题是您只是打印结果的名称而不是结果本身。
我已将您的代码更改如下,
static void modify()
{
System.out.println("Enter employee ID");
empid=sc.nextInt();
try{
con=Connection1.getConnection();
stmt=con.createStatement();
String d="select * from emp where empid='"+empid+"'";
rs=stmt.executeQuery(d);
while(rs.next()){
//Getting column value from record by giving column no
System.out.println(rs.getString(1)); //line 1
//Getting column value from record by giving column name,
System.out.println(rs.getString("empid"));// line 2
}
}
catch(SQLException e)
{
e.printStackTrace();
}
}
请注意,上面的代码 (第 1 行) 将打印每条记录的第一列(return 来自数据库),此处returned 列的顺序无法保证。
如果要获取特定列,则可以在 resultSet 的 getString 方法中将列名指定为参数 (第 2 行).
您必须使用适当的方法来获取值,如果第 2 列在数据库中的数据类型为 INTEGER,那么您必须使用 rs.getInt(2)
.
在您的代码中,
System.out.println(""+rs);
In Java 当你在 System.out 中调用 println(Object) 方法时,它会调用 String.valueOf(Object) 方法,它又会调用 toString() 方法,这会return 你的对象的字符串表示,这里只有你传递的查询,而不是记录。