在什么条件下,使用方法executeUpdate在PreparedStatement对象上执行的statement语句将返回0而不引发SQLException?
例如:
String query = "INSERT INTO mytable (column1,column2) VALUES (5,6)";
PreparedStatement preparedStatement = connection.prepareStatement(query);
if(preparedStatement.executeUpdate()!=1){
// A strange error has occurred
} else{
// do what ever
},为什么我要问?,我目前总是检查以确保返回的行数等于1,但我不知道这是否过分,如果它不应该返回任何东西,只返回1。
发布于 2013-08-15 18:40:08
所以我尝试了一下,是的,您可以使用一个0语句获得一个INSERT返回值。如果您在没有行的SELECT * FROM表中使用INTO另一个表,则会发生这种情况。例如,假设domain和domain2有相同的模式,domain2为空,执行以下操作
Connection con = dataSource.getConnection();
PreparedStatement ps = con.prepareStatement("INSERT INTO domain SELECT * FROM domain2");
System.out.println(ps.executeUpdate());打印0。
我唯一一次使用executeUpdate的返回值是在一行上使用一个DELETE语句,以确保它在之前存在并被删除。我认为你不应该和INSERT一起使用它。
发布于 2013-08-15 18:20:04
发布于 2013-08-15 18:16:48
对于您提供的示例SQL或要从参数插入单个行的任何SQL,如果没有发生SQLException,则结果始终为1。
https://stackoverflow.com/questions/18258891
复制相似问题