获取使用PreparedStatement更新的行数

时间:2010-09-14 18:35:59

标签: java jdbc prepared-statement

如何获取使用PreparedStatement更新的行数?

.getUpdateCount()返回0.

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

我的代码:

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

4 个答案:

答案 0 :(得分:8)

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

...
updTrans.addBatch();
upd = updTrans.executeBatch();

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

答案 1 :(得分:5)

您是否尝试使用:

int n = preparedStatement.executeUpdate();

您可以在此处找到有关如何使用PreparedStatement的一些解释。

答案 2 :(得分:5)

请参阅Javadoc

  

public int executeUpdate()                     抛出SQLException

     

在此PreparedStatement对象中执行必须的SQL语句   是一个SQL INSERT,UPDATE或DELETE   声明;或者是一个SQL语句   什么都不返回,比如DDL   言。

     

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

     

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

答案 3 :(得分:2)

getUpdateCount旨在与execute(String sql)方法一起使用。你可能正在这样做:

String sql = "UPDATE some_table SET somecolumn = ? WHERE someId = ?";
PreparedStatement ps = connection.prepare(sql);
ps.setString(1, val);
ps.setInt(2, id);
ps.executeUpdate();

在这种情况下,你应该只做

int rowsUpdated = ps.executeUpdate();