问题:您可以使用多个语句和记录集,它们同时运行,在非多线程中使用相同的连接吗?
我只发现了我感兴趣的这个问题,但答案并不一致。
每个连接的 JDBC 语句/PreparedStatement
答案解释了我知道的记录集和语句之间的关系。
鉴于此,您不能有多个记录集用于声明
答案说您可以有多个记录集进行连接。但他们没有提到任何其他来源。
我在问是否可以循环第一个记录集,然后使用相同的连接(用于生成第一个记录集)打开另一个记录集,使用它在迭代中循环。定义这种行为的文档在哪里?
我感兴趣的情况是这样的,语句中同时执行任务
Connection con = Factory.getDBConn (user, pss, endpoint, etc);
Statement stmt = con.createStatement ();
ResultSet rs = stmt.executeQuery ("SELECT TEXT FROM dba");
while (rs.next ()) {
rs.getInt (....
rs.getInt (....
rs.getInt (....
rs.getInt (....
Statement stmt2 con.createStatement = ();
ResultSet rs2 = stmt2.executeQuery ("iSelect ......");
while (rs2.next ()) {
....
rs2.close ();
stm2.close ();
Statement stmt3 con.createStatement = ();
ResultSet rs3 = stmt3.executeQuery ("Insert Into table xxx ......");
....
rs3.close ();
stm3.close ();
}
再澄清一点:在 stmt3 中执行更新,您可能会收到如下错误:
java.sql.SQLException:当前连接上有一个打开的结果集,必须在执行查询之前关闭。
所以你不能在同一个连接中混合 SQL。