DatabaseMetaData接口不工作



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

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

我知道它支持TYPE_SCROLL_SENSITIVE类型。当我在使用它的时候,它是有效的。然而,上面报告的方法返回false。你试过用这种方法吗?如果是,工作正常吗?提前感谢。

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

在MySQL Connector/j5.1.21中的实现是:

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

然而,快速查看一下实现的其余部分,可以发现MySQL也支持其他类型

假设您指的是连接器/J驱动程序(MySQL有多个JDBC驱动程序),从MySQL连接器/J JDBC实现注释:

  • "MySQL不支持SQL游标,JDBC驱动程序不模拟它们",和
  • "默认情况下,ResultSets被完全检索并存储在内存中。"

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

相关内容

  • 没有找到相关文章

最新更新