1

我正在尝试教程中解释的此接口的方法:

我来啦:

DatabaseMetaData dm = con.getMetaData();
System.err.println(dm.supportsResultSetType(ResultSet.TYPE_SCROLL_SENSITIVE));

我知道它支持这种TYPE_SCROLL_SENSITIVE类型。因为我正在使用它并且它有效。但是,上面报告的方法返回 false。你有没有尝试过使用这种方法?如果是,它是否正常工作?提前致谢。

PS:其他两种类型的结果集(TYPE_SCROLL_INSENSITIVETYPE_FORWARD_ONLY)也是如此。考虑到这是默认类型,我在所有三种情况下都 TYPE_FORWARD_ONLY得到了一点奇怪。更新:我正在使用 JDBC-Mysql 驱动程序;false

4

2 回答 2

0

MySQL Connector/J 5.1.21 中的实现是:

public boolean supportsResultSetType(int type) throws SQLException {
    return (type == ResultSet.TYPE_SCROLL_INSENSITIVE);
}

然而,快速浏览其余的实现表明 MySQL 也支持其他类型。

于 2013-05-18T16:20:37.727 回答
0

假设您指的是 Connector/J 驱动程序(MySQL 有多个 JDBC 驱动程序),来自MySQL Connector/J JDBC implementation notes

  • “MySQL 不支持 SQL 游标,并且 JDBC 驱动程序不模拟它们”,以及
  • “默认情况下,ResultSet 被完全检索并存储在内存中。”

由于TYPE_SCROLL_SENSITIVETYPE_SCROLL_INSENSITIVETYPE_FORWARD_ONLY通常表示游标类型,因此驱动程序甚至不尝试模拟它们的语句可以解释为什么supportsResultSetType(...)对所有值都返回 FALSE。对于将整个结果集保存在内存中的默认行为,只进或滚动模式将无关紧要。

于 2013-05-18T16:25:03.430 回答