在JDBC连接之后在Eclipse中执行预备语句后无法检索数据

时间:2014-04-24 20:47:42

标签: java sql eclipse jdbc

以下是我在进行jdbc连接后使用的预备语句(使用SQL Developer),但在执行时我收到以下错误

resultsetoracle.jdbc.driver.OracleResultSetImpl@762f5aa3

如果不使用预备声明,我可以从数据库中检索数据。不确定我使用的结果集是否存在问题以查看结果。

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

请帮忙。提前致谢 我使用以下jar(OJDBC6-11.2.0.2.0)

public static void main(String[] argv) {
        Connection conn= null;
        PreparedStatement pstmt = null;
        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");
            System.out.println("connecting to a database");
            //Making JDBC connection
            conn = DriverManager.getConnection(url,userName,password);
            System.out.println("Database connection successfully");
            System.out.println("creating statement");
             String query = "select * from event where externaleventid=?";
              PreparedStatement pstmt = conn.prepareStatement(query); 

            //Bind values into the parameters.
              pstmt.setString(1,"1256294"); 
               ResultSet rs = pstmt.executeQuery();

              System.out.println("resultset" + rs);
              conn.close();


        } catch(SQLException se){
            se.printStackTrace();
        } catch(Exception e){
            e.printStackTrace();
        } finally{
            try{
                if(stmt!=null)
                    conn.close();
            }catch(SQLException se){

            }
        }try {
            if(conn!=null)
                conn.close();

        }catch(SQLException se){
            se.printStackTrace();
        }   


    }

2 个答案:

答案 0 :(得分:0)

这不是错误。您要打印的是结果集的toString,而不是结果集的内容。尝试循环浏览rs.next()

答案 1 :(得分:0)

您可以像rs.getString("mycolumn")那样获取名为" mycolumn"的列的结果这是类似字符串的数据(为适当的类型调用适当的方法),但您必须使用next()循环遍历结果集。 next()方法返回一个布尔值,让您知道何时完成。所以:

while (rs.next()){
   System.out.println(rs.getString("mycolumn"));
}

列位置(1,2,3,...)和列名称都是处理列的合法方式

修改

如果这有用,请查看结果集中的列数:

ResultSetMetaData rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();

你也可以这样做

rsmd.getColumnType(1);
rsmd.getColumnLabel(1);
rsmd.getColumnDisplaySize(1);

以获取有关第1列的更多信息。