如何使用select关键字从oracle数据库显示记录

时间:2015-06-19 18:11:39

标签: java sql jdbc oracle-xe

我想使用 select 关键字在 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'

2 个答案:

答案 0 :(得分: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行)将打印每条记录的第一列(从db返回),此处不保证返回列的顺序

如果要获取“特定”列,则可以在resultSet (第2行)的getString方法中将列名指定为参数。

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

在您的代码中,

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

在Java中调用System.out中的println(Object)方法时,会调用String.valueOf(Object)方法再次调用toString()方法,这将返回对象的String表示,这里没有但是你传递的查询,而不是记录。

答案 1 :(得分:0)

您正在打印toString()的{​​{1}}表示。相反,您应该执行语句(您所做的),并从Statement获取相关字符串。

坦率地说,RestulSet没有给出迭代其列的最舒适方式,但它是可行的:

ResultSet