Java JDBC:找出查询是否成功?
我正在使用JDBC和mysql。我可以让我的查询工作得很好。 但对于更新查询,例如,我想知道是否有任何方法可以确定更新是否成功(例如,如果找不到行)Java JDBC:找出查询是否成功?,java,mysql,jdbc,Java,Mysql,Jdbc,我正在使用JDBC和mysql。我可以让我的查询工作得很好。 但对于更新查询,例如,我想知道是否有任何方法可以确定更新是否成功(例如,如果找不到行) UPDATE TABLE SET column = 'newvalue' WHERE primary_key =2 如果可能的话,我希望得到具体的错误消息,这样我就可以抛出一个关于查询失败原因的特定异常 感谢您的帮助。executeUpdate()将返回受SQL语句影响的行数: int rows = stmt.executeUpdate("
UPDATE TABLE SET column = 'newvalue' WHERE primary_key =2
如果可能的话,我希望得到具体的错误消息,这样我就可以抛出一个关于查询失败原因的特定异常
感谢您的帮助。executeUpdate()将返回受SQL语句影响的行数:
int rows = stmt.executeUpdate("UPDATE ...");
System.out.println(rows + " rows updated");
当然,您可以通过以下方式了解自己:
返回:(1)SQL数据操作语言(DML)语句的行数,或(2)不返回任何内容的SQL语句的行数为0
返回受影响行的行数。您可以使用此选项检查更新是否已成功执行:
PreparedStatement pstmt = con.prepareStatement("UPDATE TABLE ...");
int rowsUpdated = pstmt.executeUpdate();
if (rowsUpdated == 0) {
// handle no update
}
问题是我想知道更新失败的具体原因,这样我就可以抛出一个带有该原因的异常。@user1795609:只有在违反约束或出现语法错误的情况下才会“失败”,然后才会抛出SQLException。如果返回0,则表示表中的非行与您的
where
标准匹配-这不被视为“失败”。这是UPDATE
语句可以接受的结果。这很好,但我实际上想要一种获取特定错误消息的方法。例如,如果找不到行,它将返回某种类型的错误消息,我可以用来引发异常。@user1795609:如果找不到行,rowsUpdated
将为0
。