【发布时间】:2017-04-07 06:41:08
【问题描述】:
所以我使用 jdbc 并在更新我的 db 表后尝试从 execute(sql) 方法获取布尔返回值。以下是代码:
try{
Statement stmt = conn.createStatement();
String sql = "update emp_earnings set salary = 6400 where lower(name)= 'bob'";
Boolean result = stmt.execute(sql);
System.out.println("rows affected (Y/N): " + result );
}catch(Exception e){
System.out.println("some error in second");
e.printStackTrace();
}
当我检查我的数据库表时,工资已更新,但 execute(sql) 已返回“假”。
尽管execute() 正在工作,但我得到的输出为“假”。
我检查了网络,它说如果工作它应该返回“真”。 executeUpdate() 当我在相同的代码中使用它而不是 execute() 并提供所需的输出时,会返回“受影响的行数”。
我做错了什么?
【问题讨论】:
-
找到此类问题答案的最佳位置是JDBC Database Access 教程和JavaDocs
-
“我做错了什么?” 您没有阅读
execute()的文档,因为它说:返回 如果第一个结果是 ResultSet 对象,则为 true; 如果是更新计数则为 false 或没有结果。 --- 如果你想要更新计数,你应该调用executeUpdate():返回 [...] 行计数。 -
这和PL/SQL或PL/SQL Developer有什么关系?
-
@William Robertson 我认为它也是一个数据库错误。因为我也在桌子上运行触发器。我认为某些东西可能会限制它。
-
示例中没有PL/SQL,PL/SQL Developer 不使用JDBC。我已将标签更新为 Oracle 和 SQL。