ResultSet holdability确定在使用连接接口的commit()方法提交事务(包含所述游标/ResultSet对象)时,是关闭还是保持打开ResultSet对象(游标)。
Connection 接口的setHoldability() 方法用于将此连接(使用此连接创建)中ResultSet对象的可保存性设置为所需值。
此方法接受代表您要设置的ResultSet可保存性值的整数值。ResultSet接口提供两个值来指定ResultSet的可保存性,即-
CLOSE_CURSORS_AT_COMMIT:如果ResultSet对象的可保存性设置为此值。每当您使用commit()Connection接口的方法提交/保存事务时,在当前事务中创建的ResultSet对象(已打开)将被关闭。
HOLD_CURSORS_OVER_COMMIT:如果ResultSet对象的可保存性设置为此值。每当您使用commit()Connection接口的方法提交/保存事务时,在当前事务中创建的ResultSet对象(已打开)将保持打开状态
要将可保持性更改/设置为所需值-
使用registerDriver()DriverManager类的方法将驱动程序注册为-
//注册驱动程序 DriverManager.registerDriver(new com.mysql.jdbc.Driver());
使用getConnection()DriverManager类的方法获取连接,如下所示:
//获得连接 String url = "jdbc:mysql://localhost/mydatabase"; Connection con = DriverManager.getConnection(url, "root", "password");
使用setHoldability()Connection接口的方法将ResultSet的可保存性设置为所需的值-
con.setHoldability(ResultSet.CLOSE_CURSORS_AT_COMMIT);
以下JDBC程序建立与数据库的连接,并将可保存性值设置为CLOSE_CURSORS_AT_COMMIT。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; public class Connection_setHoldability { public static void main(String args[]) throws SQLException { //注册驱动程序 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //获得连接 String url = "jdbc:mysql://localhost/mydatabase"; Connection con = DriverManager.getConnection(url, "root", "password"); System.out.println("Connection established......"); //将自动提交设置为false- con.setAutoCommit(false); //将可保存性设置为CLOSE_CURSORS_AT_COMMIT- con.setHoldability(ResultSet.CLOSE_CURSORS_AT_COMMIT); System.out.println("ResultSet holdability value has been changed to "+con.getHoldability()); } }
输出结果
Connection established...... ResultSet object is open