Statement st = null; try { st = connection.createStatement(); for (int i = 0; i < sqls.length; i++) { st.addBatch(sqls[i]); } st.executeBatch(); } catch (Exception e) { log.error(e.getMessage()); } sqls 是个sql语句的数组
数据库没任何变化,肯定是连接这个类写得有问题. 你至少要先写个插入语句测试一下,看看有没有和数据库连通,能否操作? java.sql.Statement sm = con.createStatement(); int count = sm.executeUpdate(sqlInsert); if(count > 0) { System.out.println("成功"); } 然后把你的sql语句数组贴出来,最好把你的这个连接类的代码贴出来. 别人才好判断.
用prepareStatement试下 pstmt = conn.prepareStatement("DELETE FROM tab_1 WHERE id = ?"); for (int i = 0; i < objIDArray.length; i++) { pstmt.setString(1, objIDArray[i]); pstmt.addBatch(); } pstmt.executeBatch(); close(pstmt);
try {
st = connection.createStatement();
for (int i = 0; i < sqls.length; i++) {
st.addBatch(sqls[i]);
}
st.executeBatch();
} catch (Exception e) {
log.error(e.getMessage());
}
sqls 是个sql语句的数组
你至少要先写个插入语句测试一下,看看有没有和数据库连通,能否操作?
java.sql.Statement sm = con.createStatement();
int count = sm.executeUpdate(sqlInsert);
if(count > 0)
{
System.out.println("成功");
}
然后把你的sql语句数组贴出来,最好把你的这个连接类的代码贴出来.
别人才好判断.
pstmt = conn.prepareStatement("DELETE FROM tab_1 WHERE id = ?");
for (int i = 0; i < objIDArray.length; i++)
{
pstmt.setString(1, objIDArray[i]);
pstmt.addBatch();
}
pstmt.executeBatch();
close(pstmt);
它们之间存在效率的问题,因为prepareStatement有预编译的功能.
当反复执行某条SQL语句时,可以用prepareStatement.
你觉得执行SQL语句数组的时候,用它合适吗?
prepareStatemen在重复改变参数的query使用效率也比较高,并不是执行某一条的效率才高。
conn.setAutoCommit(false);
ps = conn.prepareStatement(sql);
for(int i=0; i<roomids.length; i++) ps.setString(1,ksid);
ps.setString(2,roomids[i]);
ps.addBatch();
}
ps.executeBatch();
conn.setAutoCommit(true);
1.conn.setAutoCommit(false);
2.pstmt.executeBatch();
3.conn.commit();
4.conn.setAutoCommit(true);你没写commit()吧??
当自动提交关闭的情况下,不写这句,操作是不进行提交的