Java DatabaseMetaData 支持 ResultSetHoldability() 方法示例
ResultSet 可保持性决定了在使用 Connection 接口的 commit() 方法提交事务(包含该游标/ResultSet 对象)时,ResultSet 对象(游标)是应该关闭还是保持打开状态。
ResultSet 接口提供两个值来指定 ResultSet 的可保持性,即 −
CLOSE_CURSORS_AT_COMMIT:如果 ResultSet 对象的可保持性设置为此值。每当您使用 Connection 接口的 commit() 方法提交/保存事务时,当前事务中创建的 ResultSet 对象(已打开)都将被关闭。
HOLD_CURSORS_OVER_COMMIT:如果 ResultSet 对象的可保持性设置为此值。每当使用 Connection 接口的 commit() 方法提交/保存事务时,当前事务中创建的 ResultSet 对象(已打开)将保持打开状态。
DatabaseMetaData 接口的 supportsResultSetHoldability() 方法用于确定底层数据库是否支持指定的 ResultSet 可保存性。 此方法接受一个表示 ResultSet 可保存性的整数,并返回一个布尔值,该值等于 −
当底层数据库支持存储过程时,返回 True。
当底层数据库不支持存储过程时,返回 False。
判断底层数据库是否支持存储过程 −
确保数据库已启动并正在运行。
使用 DriverManager 类的 registerDriver() 方法注册驱动程序。传递与底层数据库对应的驱动程序类的对象。
使用 DriverManager 类的 getConnection() 方法获取连接对象。将数据库 URL、用户名和密码作为字符串变量传递。
使用 Connection 接口的 getMetaData() 方法获取当前连接的 DatabaseMetaData 对象。
最后,调用 ResultSetMetaData 接口的 supportResultSetHoldability() 方法,并将其返回值保存在一个布尔变量中,例如 bool。如果该值为 true,则表示底层数据库支持存储过程,否则不支持。
接下来的 JDBC 程序将与 MySQL 数据库建立连接,并判断并打印其是否支持指定的 ResultSet 可保存性。
示例
import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; public class DatabaseMetadata_supportsResultSetHoldability { 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("连接已建立......"); //检索元数据对象 DatabaseMetaData metaData = con.getMetaData(); //判断底层数据库是否支持指定的并发度 boolean bool = metaData.supportsResultSetHoldability(ResultSet.CLOSE_CURSORS_AT_COMMIT); if(bool) { System.out.println("Underlying database supports the specified holdability"); } else { System.out.println("Underlying database does not supports the specified holdability"); } } }
输出
连接已建立...... Underlying database does not supports the specified holdability