我试图使用connection.commit()
应关闭所有非保留结果集的事实。我该怎么做才能确保connection.commit()
关闭所有未保留的结果集?
我有以下源代码
conn.setAutoCommit(false);
conn.setHoldability(CLOSE_CURSORS_AT_COMMIT);
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY,
ResultSet.CLOSE_CURSORS_AT_COMMIT);
ResultSet rs = stmt.executeQuery("select * from dummy");
System.out.println("default holdability " + conn.getMetaData().getResultSetHoldability());
//System.out.println("rs holdability " + rs.getHoldability());
conn.commit();
rs.getStatement().isClosed(); //this is false with postgres and mysql
当我阅读JDBC规范时,当在连接上发出提交时,将关闭非保持的结果集。我现在用PostgreSQL试过这个
,MySQL和DB2。只有DB2实际关闭结果集。 PostgreSQL和MySQL保持结果集打开。 PostgreSQL实际上非常有趣,即使我明确关闭连接,结果集仍然标记为打开。我正在寻找一种可靠的方法来确保在提交非保持结果集后关闭。我试图设置数据库的默认可保存性,但这没有任何效果,类似于我使用createStatment
并使用CLOSE_CURSORS_AT_COMMIT
时,这对PostgreSQL和MySQL也没有影响。