以下是我在进行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();
}
}
答案 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列的更多信息。