获取使用PreparedStatement更新的行数

ser*_*nni 4 java jdbc prepared-statement

如何获取PreparedStatement更新的行数?

.getUpdateCount() 返回0.

对于获取executeUpdate错误:批处理期间发生错误:
必须执行或清除批处理

我的代码:

updTrans = dataSource.getConnection().prepareStatement("update...");
updTrans.setInt(1, Integer.valueOf(transaksjonstatusid));
...
updTrans.addBatch();
upd = updTrans.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 8

您应该PreparedStatement#executeBatch()在使用批次时使用.

...
updTrans.addBatch();
upd = updTrans.executeBatch();
Run Code Online (Sandbox Code Playgroud)

它返回int[]包含每个批次的更新计数.

  • 实际返回值*可能取决于所使用的JDBC实现(更确切地说,使用的是JDBC驱动程序).如果您认为错误而不是JDBC API文档(或JDBC驱动程序特定文档),那么请考虑在JDBC驱动程序供应商/维护者处发布问题报告.我不能详细说明,因为你不知道你正在使用哪一个. (3认同)

Fan*_* H. 5

你尝试过使用:

int n = preparedStatement.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

在这里,您可以找到有关如何使用PreparedStatement的一些解释.


Sea*_*ean 5

Javadoc

public int executeUpdate()抛出SQLException

执行此PreparedStatement对象中的SQL语句,该对象必须是SQL INSERT,UPDATE或DELETE语句; 或者不返回任何内容的SQL语句,例如DDL语句.

返回:(1)INSERT,UPDATE或DELETE语句的行计数或(2)0表示不返回任何内容的SQL语句

抛出:SQLException - 如果发生数据库访问错误或SQL语句返回ResultSet对象