Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC:找出查询是否成功?_Java_Mysql_Jdbc - Fatal编程技术网

Java JDBC:找出查询是否成功?

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("

我正在使用JDBC和mysql。我可以让我的查询工作得很好。 但对于更新查询,例如,我想知道是否有任何方法可以确定更新是否成功(例如,如果找不到行)

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