Java Tutorial/Database/ResultSet Holdability
Check ResultSet Holdability
You can get the result set holdability in three ways.
- int Statement.getResultSetHoldability()
- int DatabaseMetaData.getResultSetHoldability()
- int Connection.getHoldability()
<source lang="java">
import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; public class Main {
public static void main(String[] args) throws Exception { Connection conn = getConnection(); DatabaseMetaData dbMeta = conn.getMetaData(); if (dbMeta.supportsResultSetHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT)) { System.out.println("this database hold cursors over commit"); } else if (dbMeta.supportsResultSetHoldability(ResultSet.CLOSE_CURSORS_AT_COMMIT)) { System.out.println("this database close cursors at commit"); } conn.close(); } private static Connection getConnection() throws Exception { Class.forName("org.hsqldb.jdbcDriver"); String url = "jdbc:hsqldb:mem:data/tutorial"; return DriverManager.getConnection(url, "sa", ""); }
}</source>
this database hold cursors over commit
ResultSet Holdability
You may improve database performance by including the ResultSet holdability:
- java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT
- java.sql.ResultSet.CLOSE_CURSORS_AT_COMMIT
Set ResultSet Holdability Using the Connection Object
<source lang="java">
int holdability = java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT; conn.setHoldability(holdability);</source>