在我的代码中,我使用 4 个准备好的语句来(选择、插入、更新)我的表,我还必须在 for 循环中使用这些语句,因为我需要处理大量数据,我只使用一个数据库连接和语句在 for 循环之前只打开一次,我在每次迭代中使用 addBatch(),在循环结束后,语句使用 executeBatch() 执行,语句在 finally 块中关闭,但在第二次迭代后仍然抛出 MaxOpenPreparedStatements 异常! !, 我能做些什么来避免这种情况?
try{
pStat1 = conn.prepareStatement("insert into...");
pStat2 = conn.prepareStatement("update...");
pStat3 = conn.prepareStatement("insert into...");
pStat4 = conn.prepareStatement("update...");
for (.....) {
//set parameters
pStat1.addBatch();
//set parameters
pStat2.addBatch();
//set parameters
pStat3.addBatch();
//set parameters
pStat4.addBatch();
}
pStat1.executeBatch();
pStat2.executeBatch();
pStat3.executeBatch();
pStat4.executeBatch();
} catch (Exception e) {
e.printStackTrace();
}finally {
if(pStat1!= null){
try {
pStat1.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pStat2!= null){
try {
pStat2.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pStat3!= null){
try {
pStat3.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pStat4!= null){
try {
pStat4.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
提前致谢。