DatabaseMetaData接口不起作用?

时间:2013-05-18 15:39:05

标签: java jdbc resultset

我正在尝试this教程中的这个界面的方法:

我走了:

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

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

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

2 个答案:

答案 0 :(得分:0)

MySQL Connector / J 5.1.21中的实现是:

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

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

答案 1 :(得分:0)

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

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

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