首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PreparedStatement.executeUpdate()可以在插入时返回0吗?

PreparedStatement.executeUpdate()可以在插入时返回0吗?
EN

Stack Overflow用户
提问于 2013-08-15 18:08:27
回答 4查看 24.1K关注 0票数 2

在什么条件下,使用方法executeUpdatePreparedStatement对象上执行的statement语句将返回0而不引发SQLException?

例如:

代码语言:javascript
复制
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。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-15 18:40:08

所以我尝试了一下,是的,您可以使用一个0语句获得一个INSERT返回值。如果您在没有行的SELECT * FROM表中使用INTO另一个表,则会发生这种情况。例如,假设domaindomain2有相同的模式,domain2为空,执行以下操作

代码语言:javascript
复制
Connection con = dataSource.getConnection();
PreparedStatement ps = con.prepareStatement("INSERT INTO domain SELECT * FROM domain2");
System.out.println(ps.executeUpdate());

打印0

我唯一一次使用executeUpdate的返回值是在一行上使用一个DELETE语句,以确保它在之前存在并被删除。我认为你不应该和INSERT一起使用它。

票数 10
EN

Stack Overflow用户

发布于 2013-08-15 18:20:04

来自文档executeUpdate()方法:

返回:(1) SQL数据操作语言(DML)语句的行计数;或(2) 0表示不返回任何内容的SQL语句

0似乎是一个完美的自然结果(即不是一个错误)。

票数 3
EN

Stack Overflow用户

发布于 2013-08-15 18:16:48

对于您提供的示例SQL或要从参数插入单个行的任何SQL,如果没有发生SQLException,则结果始终为1。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18258891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档