如何知道从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语句失败,事务将无法提交

  • 如果您的意思是这些更改被安全地写入磁盘(或其他什么),那么您就知道,如果提交没有引发异常,就会发生这种情况

  • 如果你的意思是这些变化是你所期望的,那么上面的所有内容和计数都是你所期望的


我正在尝试内部使用它。在catch中,我正在做回滚。因此,如果没有捕获到异常,这是否意味着两行都已成功删除。但是您没有注释掉注释掉的代码,否则不会删除任何内容。你积累计数的逻辑是正确的。如果这些行被注释掉,则没有删除,因此正确答案为零。如果没有,正确的答案仍然在
count'中给出,无论是否有
commit()