嗯,同vcvj!补充一点: 用Statement st=conn.createStatement();的话 默认是与Statement st=conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);如果想要用rs.last()等方法的话,得设置ResultSet为允许滚动(scrollable),即: Statement st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);当然,也可以用: Statement st=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);TYPE_SCROLL_INSENSITIVE 和 TYPE_SCROLL_SENSITIVE的区别是: 前者不会理会其他程序对ResultSet所做的变动,而后者会实时更新其他程序造成的ResultSet变动原文是 TYPE_SCROLL_INSENSITIVE: that is scrollable but generally not sensitive to changes made by others. TYPE_SCROLL_SENSITIVE: that is scrollable and generally sensitive to changes made by others.
用Statement st=conn.createStatement();的话
默认是与Statement st=conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);如果想要用rs.last()等方法的话,得设置ResultSet为允许滚动(scrollable),即:
Statement st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);当然,也可以用:
Statement st=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);TYPE_SCROLL_INSENSITIVE 和 TYPE_SCROLL_SENSITIVE的区别是:
前者不会理会其他程序对ResultSet所做的变动,而后者会实时更新其他程序造成的ResultSet变动原文是
TYPE_SCROLL_INSENSITIVE: that is scrollable but generally not sensitive to changes made by others.
TYPE_SCROLL_SENSITIVE: that is scrollable and generally sensitive to changes made by others.
我在用mysql的时候还碰到过另外一种不能使用rs.last()的情况:jdbc驱动不支持。
后来更新了驱动才解决问题