先感谢下看帖子的人 int i = 0;
try {
NewsBean nb = getById(id);
Connection conn = DBHelp.getConnection();
conn.setAutoCommit(false); // 设置自动提交为FALSE 开启事务
try {
String sql = "delete from contents where id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, nb.getContent());
i = ps.executeUpdate();
System.out.println(i);
sql = "delete from news where id=?";
ps = conn.prepareStatement(sql);
ps.setInt(1, nb.getId());
i = ps.executeUpdate();
System.out.println(i);
conn.commit();// 提交事务
} catch (Exception e) {
e.printStackTrace();
conn.rollback();// 事务回滚
} finally {
conn.setAutoCommit(true); // 恢复自动提交
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return i;
两个问题1.请各位帮我看看 这让处理 事务对不对 感觉怪怪的 有好的处理方法希望共享下2.i 输出了两次 第一次为 1 第二次为 0 为什么?有什么办法 输出 事务处理总影响行数
try {
NewsBean nb = getById(id);
Connection conn = DBHelp.getConnection();
conn.setAutoCommit(false); // 设置自动提交为FALSE 开启事务
try {
String sql = "delete from contents where id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, nb.getContent());
i = ps.executeUpdate();
System.out.println(i);
sql = "delete from news where id=?";
ps = conn.prepareStatement(sql);
ps.setInt(1, nb.getId());
i = ps.executeUpdate();
System.out.println(i);
conn.commit();// 提交事务
} catch (Exception e) {
e.printStackTrace();
conn.rollback();// 事务回滚
} finally {
conn.setAutoCommit(true); // 恢复自动提交
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return i;
两个问题1.请各位帮我看看 这让处理 事务对不对 感觉怪怪的 有好的处理方法希望共享下2.i 输出了两次 第一次为 1 第二次为 0 为什么?有什么办法 输出 事务处理总影响行数
i=0;
i+= ps.executeUpdate(); //累加i 的值
试试。
i 输出了两次 第一次为 1 第二次为 0 为什么?有什么办法 输出 事务处理总影响行数因为 i第一次 是记录的delete from contents where id=? 执行影响行数 为1说明 影响行数为1
第二次是记录的delete from news where id=? 执行影响的行数 为0说明影响行数为 0楼主想得到 总影响记录数:
那么 可以声明用 两个变量记录 记录两次操作受影响的行数
一楼二楼的也可以实现记录两次操作受影响的总行数
也许你设置了级联删除,你删除第一个的时候,数据库自动删除了第二个。至于事务,你的做法差不多。但是最外面的那个try catch 有点奇怪!
i=0;
i+= ps.executeUpdate(); //累加i 的值
试试。
真的觉得你你写的第二个try {}catch(){}怪怪的,..