JDBC连接后在Eclipse中执行准备语句后无法检索数据
Posted
技术标签:
【中文标题】JDBC连接后在Eclipse中执行准备语句后无法检索数据【英文标题】:Not able to retrieve data after executing preparatory statement in Eclipse after JDBC Connection 【发布时间】:2014-04-24 20:47:42 【问题描述】:这是我在建立 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();
【问题讨论】:
【参考方案1】:这不是错误。您要打印的是结果集的toString
,而不是结果集的内容。尝试循环遍历rs.next()
。
【讨论】:
感谢您的回复。它确实有帮助。【参考方案2】:您可以像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 列的更多信息。
【讨论】:
感谢您的回复。我正在使用 while (rs.next()) String externaleventid = rs.getString("externaleventid"); System.out.println("externaleventid : " + externaleventid); 我只得到了列的结果。有没有办法在我们执行查询时显示整个查询结果而不仅仅是列。由于我在查询中使用 * 并且表有超过 10 列。如何在控制台上打印所有列的结果。 我想您可以使用 StringBuilder 并将它们全部附加在一起。在这种情况下,您可能需要 number 选项。这是基于 1 的。因此,如果您知道 10 列,则执行从 1 到 10 的循环。如果您问我如何计算结果集中的列数,请阅读我刚才的编辑。 谢谢!它确实有帮助。以上是关于JDBC连接后在Eclipse中执行准备语句后无法检索数据的主要内容,如果未能解决你的问题,请参考以下文章
eclipse用jdbc连接SQL server时出现了问题……这是啥情况啊!请大神指教!