如何知道从Java在mySQL中提交时删除的行数
我在两个不同的表上有两个如何知道从Java在mySQL中提交时删除的行数,java,mysql,Java,Mysql,我在两个不同的表上有两个delete操作。删除后,我知道是否执行了这两个查询。这是我的密码 properties.load(inputStream); String sql = properties.getProperty("deleteImageByImageID"); ps = DBConnection.prepareStatement(sql); ps.setString(1, imageID); sql = properties.getProperty("deleteAnnImageB
delete
操作。删除后,我知道是否执行了这两个查询。这是我的密码
properties.load(inputStream);
String sql = properties.getProperty("deleteImageByImageID");
ps = DBConnection.prepareStatement(sql);
ps.setString(1, imageID);
sql = properties.getProperty("deleteAnnImageByImageID");
ps2 = DBConnection.prepareStatement(sql);
ps2.setString(1, imageID);
int count = ps.executeUpdate();
count += ps2.executeUpdate();
但现在我确实通过添加
DBConnection.setAutoCommit(false);
....
DBConnection.commit();
现在我如何知道这两条语句是否都成功执行了(两次删除都发生了)?首先,根据失败的严重程度,可能会引发异常,因此您应该确保并使用try/catch-如果它引发异常,您要处理它 第二,在接球过程中,你需要减少牵引力
DbConnection.rollback();
您的代码应该如下所示:
connection.setAutoCommit(false);
ps = DBConnection.prepareStatement(sql);
ps.setString(1, imageID);
ps2 = DBConnection.prepareStatement(sql);
ps2.setString(1, imageID);
int count = ps.executeUpdate();
count += ps2.executeUpdate();
connection.commit();
executeUpdate()
调用返回的计数是事务提交时将受到影响的行数。如果事务回滚,则不会影响任何行
现在我如何知道这两条语句是否都成功执行
取决于“成功执行”的含义:
- 如果您的意思是“没有SQL错误”之类的话,那么您就知道如果在prepare、set和execute语句中没有SQL异常,就会发生这种情况。如果任何SQL语句失败,事务将无法提交
- 如果您的意思是这些更改被安全地写入磁盘(或其他什么),那么您就知道,如果提交没有引发异常,就会发生这种情况
- 如果你的意思是这些变化是你所期望的,那么上面的所有内容和计数都是你所期望的
count'中给出,无论是否有commit()