【发布时间】:2009-02-27 15:30:51
【问题描述】:
如何确定 JDBC 驱动程序是否为 TYPE_FORWARD_ONLY?在我的程序中,用户配置到数据库的连接参数,他可以在类路径中使用任何 JDBC 驱动程序。在执行任何语句之前,我想知道驱动程序是否为TYPE_FORWARD_ONLY。这可能吗?
【问题讨论】:
如何确定 JDBC 驱动程序是否为 TYPE_FORWARD_ONLY?在我的程序中,用户配置到数据库的连接参数,他可以在类路径中使用任何 JDBC 驱动程序。在执行任何语句之前,我想知道驱动程序是否为TYPE_FORWARD_ONLY。这可能吗?
【问题讨论】:
DatabaseMetaData 有一个方法 supportsResultSetType(int type) 可以用来检查 ResultSet 是否支持TYPE_FORWARD_ONLY。
【讨论】:
按结果集的querying the type。例如:
Statement stmt = con.createStatement(
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE
);
ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");
System.out.println(
"Is Type Forward Only: " +
(rs.getType() == ResultSet.TYPE_FORWARD_ONLY)
);
【讨论】:
有不支持滚动的驱动程序?你能举个例子吗?当您尝试创建 SCROLL_SENSITIVE 的 Statement/ResultSet 然后询问类型时,这样的驱动程序会返回什么?像这样:
Connection con = ...;
Statement statement = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ...);
System.out.println(statement.getResultSetType());
【讨论】:
您可以从驱动程序中获取 DriverPropertyInfo,尽管我找不到描述驱动程序必须返回的内容的特定 jdbc 规范。 This reference 可能还有更多。
【讨论】: