这样写算事务吗?

kanxue660 2006-11-22 11:39:05
try{
conn= getConnection();
conn.setAutoCommit(false);
stm=conn.createStatement();
StringTokenizer st = new StringTokenizer(Sqls,split);
//sqls代表多条sql语句,以##分割
while (st.hasMoreTokens()) {
sql1= (st.nextToken()).trim();
if(!sql1.equals("")){
stm.addBatch(sql1);

}
}
stm.executeBatch();
conn.commit();
}
catch(Exception e){
System.out.println("update:"+Sqls);
try{
conn.rollback();
}
catch(Exception ex){
System.out.println("异常信息" + e.getMessage());
}

if(e.getMessage().indexOf("PRIMARY KEY")>0)
throw new DbUpdateException("PRIMARY KEY");
else
throw new DbUpdateException();
}
问题是,如果某条语句出错,为什么不回滚?有一部分数据插入表中
...全文
140 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
beiouwolf 2006-11-22
  • 打赏
  • 举报
回复
不算
//stm的ADDBATCH先做好
conn.setAutoCommit(false);

//开始一个事物
try{
//没有错误就提交事务
stm.executeBatch();
conn.commit();
}catch(Exception ex){
//存在错误回滚操作
conn.rollback();
}finally{
//重设连接属性
conn.setAutoCommit(true);
}
卓逸科技 2006-11-22
  • 打赏
  • 举报
回复
这完全不叫Transaction,事务是一个很庞大的家伙。

81,092

社区成员

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

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