【发布时间】:2018-03-23 14:25:24
【问题描述】:
我正在尝试从数据库中获取大量结果。我收到以下错误:
java.sql.SQLException: statement handle not executed
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.T4CStatement.doDescribe(T4CStatement.java:724)
at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3285)
at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1914)
at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1515)
at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:263)
at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:263)
我正在使用以下查询和处理,如下所示:
rs = con.createStatement().executeQuery("SELECT * FROM " + tableName);
while (rs.next()) {
info = new IntoTClass();
info.setId(rs.getString("column1"));
info.setContentId(rs.getString("column1"));
info.setAssetId(rs.getString("column2"));
info.setKeywords(rs.getString("column3"));
info.setAssetType(rs.getString("column4"));
info.setSubType(rs.getString("column5"));
我相信这个错误是因为它试图从数据库中获得巨大的结果。谁能建议如何从结果集中拆分结果并一次处理 3000 个?任何帮助表示赞赏。
【问题讨论】:
-
它有多大?几百万条记录对 JDBC 来说是可以的
-
我相信这个错误是因为它试图从数据库中得到巨大的结果再次猜测。 “语句句柄未执行”意味着它没有运行查询。
-
不是数百万,而是大约 20k 个结果。@Ivan。您知道为什么会出现 Exhausted ResultSet 错误吗?
-
@ElliottFrisch 对不起,我没有得到你。你的意思是查询本身没有运行?
-
正确。查询本身尚未执行。该错误表明您尝试获取结果,但没有任何活动查询可从中获取结果。
标签: java oracle jdbc spring-jdbc sqlexception