Java DatabaseMetaData 支持 ResultSetType() 方法示例
创建 Statement 对象时,您可以使用 createStatement() 方法的以下变体 (−) 选择并发性和 ResultSet 对象的类型。
Statement createStatement(int resultSetType, int resultSetConcurrency)
ResultSet 并发性
ResultSet 对象的并发性决定了其内容是否可以更新。
ResultSet 接口提供两个值来指定并发性,即 −
CONCUR_READ_ONLY:如果在创建 ResultSet 对象时将此值设置为并发性值,则无法更新 ResultSet 的内容,只能读取/检索。
CONCUR_UPDATABLE:如果在创建 ResultSet 对象时将此值设置为并发值,则可以更新 ResultSet 的内容。
ResultSet 类型
ResultSet 对象的类型根据可遍历的方向及其敏感度(ResultSet 中的更改是否反映在数据库中)决定了结果集的类型。
ResultSet 接口提供三个值来指定 ResultSet 类型,即 −
TYPE_FORWARD_ONLY:光标仅在一个方向上移动的 ResultSet 对象称为只进 ResultSet。默认情况下,JDBC 结果集是只向前的结果集。
TYPE_SCROLL_INSENSITIVE:ResultSet 的游标可以向前或向后移动。这种类型的 ResultSet 对数据库中的更改不敏感,即数据库中所做的修改不会反映在 ResultSet 中。
TYPE_SCROLL_INSENSITIVE:ResultSet 的游标可以向前或向后移动。这种类型的 ResultSet 对数据库中所做的更改很敏感,即数据库中所做的修改会反映在 ResultSet 中。
DatabaseMetaData 接口的 supportsResultSetType() 方法用于确定底层数据库是否支持指定的 ResultSet 类型。
此方法接受两个指定 ResultSet 类型的整数参数,并返回一个布尔值,该值是 −
当底层数据库支持存储过程时,返回 True。
当底层数据库不支持存储过程时,返回 False。
要确定底层数据库是否支持存储过程 −
确保您的数据库已启动并正在运行。
使用调用 DriverManager 类的 registerDriver() 方法。传递一个与底层数据库对应的驱动程序类对象。
使用 DriverManager 类的 getConnection() 方法获取连接对象。将数据库 URL、用户名和密码作为字符串变量传递。
使用 Connection 接口的 getMetaData() 方法获取当前连接的 DatabaseMetaData 对象。
最后,调用 ResultSetMetaData 接口的 supportResultSetType() 方法,并将其返回值保存在一个布尔变量(例如 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_supportsResultSetType {
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();
//判断底层数据库是否支持指定的 ResultSet 类型
boolean bool = metaData.supportsResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE);
if(bool) {
System.out.println("Underlying database supports the specified ResultSet type");
} else {
System.out.println("Underlying database does not supports the specified ResultSet type");
}
}
}
输出
连接已建立...... Underlying database supports the specified ResultSet type

