求addBatch和executeBatch的用法!

vibra 2003-04-20 11:59:25
我在bean中的代码如下
public void addBatch(String sql) {
try {
conn.setAutoCommit(false);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
stmt.addBatch(sql);
}
catch (SQLException ex) {
System.out.print("aq.Exception" + ex.getMessage());
}
}

public void executeBatch() {
try {
stmt.executeBatch();
conn.setAutoCommit(true);
}
catch (SQLException ex) {
System.out.print("aq.Exception" + ex.getMessage());
}

}

在jsp中调用,执行几个更新语句时只能更新最后那个,这是为什么?
...全文
896 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tomcat4 2003-04-20
  • 打赏
  • 举报
回复
或者直接写成
conn.setAutoCommit(false);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
stmt.addBatch(sql);
... //这地方加你要写的其他batch处理
stmt.executeBatch();
conn.setAutoCommit(true);

Tomcat4 2003-04-20
  • 打赏
  • 举报
回复
同意 johnsonzhouws()
你没有必要都封装这两个函数,如果真要封装的话,改一下:
在运行这两个函数前,先初始化stmt,然后当作它们的参数传进去!
public void addBatch(Statement stmt,String sql) {
try {
stmt.addBatch(sql);
}
catch (SQLException ex) {
System.out.print("aq.Exception" + ex.getMessage());
}
}

public void executeBatch(Statement stmt) {
try {
stmt.executeBatch();
conn.setAutoCommit(true);
}
catch (SQLException ex) {
System.out.print("aq.Exception" + ex.getMessage());
}

}
vibra 2003-04-20
  • 打赏
  • 举报
回复
johnsonzhouws() 可否给出你重写的方法?
  • 打赏
  • 举报
回复 1
可能是因为BATCH只能对应一个STMT,而不是多个STMT,你每次ADDBATCH时都对应了新的STMT,所以最后只能执行最后那个,我以前也碰到你的这种情况,我的办法是没有重写ADDBATCH与EXCUTEBATCH语句.

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧