如何获取使用PreparedStatement更新的行数?
.getUpdateCount()
返回0.
executeUpdate
错误:
批处理期间发生 错误:批处理必须执行或清除
我的代码:
updTrans = dataSource.getConnection().prepareStatement("update...");
updTrans.setInt(1, Integer.valueOf(transaksjonstatusid));
...
updTrans.addBatch();
upd = updTrans.executeUpdate();
答案 0 :(得分:8)
使用批次时应该使用PreparedStatement#executeBatch()
。
...
updTrans.addBatch();
upd = updTrans.executeBatch();
它返回包含每批次更新计数的int[]
。
答案 1 :(得分:5)
答案 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();