2015-06-19 41 views
0

显示从Oracle数据库记录我想在显示从甲骨文数据库中的记录的Java使用选择关键字,但它不工作。当我运行程序时,它会显示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' 
+2

你确定这是所有的代码吗?我什至不知道它将在哪里打印出select语句......我希望它是toString为stmt对象显示的任何东西....您需要迭代结果集并打印它给您的内容显示记录。 – BlakeP

+5

您正在打印SQL语句。但是你永远不会从'ResultSet'对象获取数据或显示该数据。所以你不会看到数据库中的任何信息。 –

+0

在您的结果集中,可以通过索引访问表中的字段。 – MaxZoom

回答

1

问题是,你只是打印你的结果不是结果本身的名称。

我已经改变了如下代码,

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号线)将打印您的每个记录的第一列(从数据库返回),这里的秩序返回的列不保证

如果您想获得特定列,那么您可以在resultSet (第2行)的getString方法中指定列名作为参数。

您必须使用适当的方法来获取值,例如,如果第2列中的数据类型为DB,则为INTEGER,那么您必须使用rs.getInt(2)

在你的代码,

System.out.println(""+rs); 

在Java中,当你调用的println(Object)方法在System.out中,这将调用将String.valueOf(Object)方法是再次将调用toString()方法,这将返回对象的字符串表示,这里只是您传递的查询,而不是记录。

0

要打印的StatementtoString()表示。相反,您应该执行语句(您所做的),并从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);