我正在尝试在 Java 应用程序中处理大量数据。数据存储在MySQL数据库中,我使用jdbc连接器8.0.11。
我的问题是我需要多次访问每条记录并且再次执行查询需要太多时间。使用ResultSet.absolute(1)会引发异常,解释游标为 TYPE_FORWARD_ONLY。
如此处所述,应创建带有参数ResultSet.TYPE_SCROLL_INSENSITIVE和参数的语句ResultSet.CONCUR_READ_ONLY,以便获得具有滚动能力的结果集。
但我的创建ResultSet始终是ResultSet.TYPE_FORWARD_ONLY,忽略创建语句方法中提供的任何参数。
在MySQL官方网站中,我没有找到任何解释或信息是否支持此功能。
对于测试用例,我编写了这段代码来检查其他组合是否会影响ResultSet类型并且总是得到TYPE_FORWARD_ONLY.
Connection conn = Database.getConnection();
Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
if(st.getResultSetType() == ResultSet.TYPE_FORWARD_ONLY) {
System.out.println("Should be scroll sensitive, is forward only");
}
st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
if(st.getResultSetType() == ResultSet.TYPE_FORWARD_ONLY) {
System.out.println("Should be scroll insensitive, is forward only");
}
st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
if(st.getResultSetType() == ResultSet.TYPE_FORWARD_ONLY) {
System.out.println("Should be scroll insensitive, is forward only");
}
st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
if(st.getResultSetType() == …Run Code Online (Sandbox Code Playgroud)