当前位置: 代码迷 >> J2SE >> executeBatch()有关问题
  详细解决方案

executeBatch()有关问题

热度:1160   发布时间:2013-02-25 00:00:00.0
executeBatch()问题
执行没有异常,查看数据库一点变化没有,语句无误.

------解决方案--------------------------------------------------------
代码呢?
------解决方案--------------------------------------------------------
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);
------解决方案--------------------------------------------------------
commit了没有啊?
------解决方案--------------------------------------------------------
学习了

------解决方案--------------------------------------------------------
Connection conn = ServiceLocator.getInstance().getConnection();
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()吧??
当自动提交关闭的情况下,不写这句,操作是不进行提交的