java.sql.SQLException:批处理期间出错:批处理必须执行或清除
我越来越 java.sql.SQLException:批处理期间出错:批处理必须为 要么被执行,要么被清除 在下面的代码中。我想执行两个查询java.sql.SQLException:批处理期间出错:批处理必须执行或清除,java,jakarta-ee,jdbc,Java,Jakarta Ee,Jdbc,我越来越 java.sql.SQLException:批处理期间出错:批处理必须为 要么被执行,要么被清除 在下面的代码中。我想执行两个查询 String sql_query="insert into m_status values(20,'test');select * from m_user"; String query1 = sql_query.toUpperCase(); String[] results = query1.split(";"); stmt = conn1.creat
String sql_query="insert into m_status values(20,'test');select * from m_user";
String query1 = sql_query.toUpperCase();
String[] results = query1.split(";");
stmt = conn1.createStatement();
conn1.setAutoCommit(false);
for (int i = 0; i < results.length; i++) {
if(results[i].startsWith("SELECT")) {
rs1 = stmt.executeQuery(results[i]);
}
else if(results[i].startsWith("INSERT")){
stmt.addBatch(results[i]);
}
}
int [] updateCounts = stmt.executeBatch();
conn1.commit();
if (rs1 != null)
rs1.close();
if (stmt != null)
stmt.close();
if (conn1 != null)
conn1.close();
String sql_query=“插入m_状态值(20,'test');从m_用户中选择*”;
字符串query1=sql_query.toUpperCase();
String[]results=query1.split(“;”);
stmt=conn1.createStatement();
conn1.设置自动提交(错误);
for(int i=0;i
使用两条语句,一条用于选择查询,另一条用于更新executeQuery
检查是否存在该Statement
的批处理,如果存在,则抛出该错误。另外,将查询包装在try catch finally
块中,并关闭finally块中的资源。实际上,您的代码可能会导致连接泄漏。请确保在使用批处理时使用
还要确保执行
int n = preparedStatement.executeUpdate();
您可以测试查询是否以大写SELECT开头,而不是以大写SELECT开头。因此,您的两个查询将添加到batch语句中。 你可以用
com.mysql.jdbc.StringUtils.startsWithIgnoreCase(results[i], "select");