Java DatabaseMetaData 的 supportsResultSetType() 方法及示例
在创建 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_SENSITIVE:ResultSet 的游标可以向前或向后移动。此类型的 ResultSet 对数据库中所做的更改敏感,即数据库中所做的修改会反映在 ResultSet 中。
DatabaseMetaData 接口的 supportsResultSetType() 方法用于确定底层数据库是否支持指定的 ResultSet 类型。
此方法接受两个整型参数,指定 ResultSet 类型,并返回一个布尔值,即:
如果底层数据库支持存储过程,则为 True。
如果底层数据库不支持存储过程,则为 False。
要确定底层数据库是否支持存储过程:
确保您的数据库正在运行。
使用 DriverManager 类的 registerDriver() 方法注册驱动程序。传递与底层数据库对应的驱动程序类的对象。
使用 DriverManager 类的 getConnection() 方法获取连接对象。将数据库的 URL、用户名和数据库用户的密码作为字符串变量传递。
使用 Connection 接口的 getMetaData() 方法获取当前连接的 DatabaseMetaData 对象。
最后,调用 ResultSetMetaData 接口的 supportsResultSetType() 方法,并将返回值保存在一个布尔变量中,例如 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 {
//Registering the Driver
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//Getting the connection
String url = "jdbc:mysql:///mydatabase";
Connection con = DriverManager.getConnection(url, "root", "password");
System.out.println("Connection established......");
//Retrieving the meta data object
DatabaseMetaData metaData = con.getMetaData();
//Determining whether the underlying database supports the specified ResultSet type
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");
}
}
}输出
Connection established...... Underlying database supports the specified ResultSet type
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP