7
社区成员




//获取结果集1
ResultSet result1 = stmt.executeQuery(sql1);
//获取结果集2
ResultSet result2 = stmt.executeQuery(sql2);
//将结果集1转换成文本
while (result1.next()) {
String s_id = result1.getString("s_id");
String initials = result1.getString("initials");
System.out.println(s_id + initials);
}
//将结果集2转换成文本
while (result2.next()) {
String p_id = result2.getString("p_id");
String p_title = result2.getString("p_title");
System.out.println(p_id + p_title);
}
如题,上述代码会报错database is locked
Exception in thread "main" java.sql.SQLException: database is locked
但是如果先获取并处理结果集1,再获取并处理结果集2就能正常运行
//获取结果集1
ResultSet result1 = stmt.executeQuery(sql1);
//将结果集1转换成文本
while (result1.next()) {
String s_id = result1.getString("s_id");
String initials = result1.getString("initials");
System.out.println(s_id + initials);
}
//获取结果集2
ResultSet result2 = stmt.executeQuery(sql2);
//将结果集2转换成文本
while (result2.next()) {
String p_id = result2.getString("p_id");
String p_title = result2.getString("p_title");
System.out.println(p_id + p_title);
}
是为什么?
在 JDBC 中,每个 Statement 对象只可以同时执行一个查询,因此在执行第二个查询之前,要先关闭第一个结果集。