Java mysql 准备好的语句更新不工作

Java mysql prepared statement update not working

这是我的代码:

ResultSet rs = statement.executeQuery("select * from page");
PreparedStatement updatepage = mySqlCon.prepareStatement("update enwiki.page set enwiki.page.Text = ? where page_id = ?");
int count = 0;
while (rs.next())
{
     int id = rs.getInt("id");
     String text = rs.getString("text");
     if(text == null)
          text = "";
     updatepage.setString(1, text);
     updatepage.setInt(2, id);


     if(count++ > 10000)
     {
         updatepage.executeUpdate();
         updatepage.clearBatch();            
         count = 0;
      }
}

updatepage.executeUpdate();

问题出在行之后:updatepage.executeUpdate() 是 运行,我使用 workbench 检查数据库,但我没有看到 table 有任何变化。

您当前的代码仅在 count 的值大于 10000 时才执行更新,并且执行单次更新。好像你 want/need 使用批处理,所以你必须在每次迭代时将语句添加到批处理中(你没有做的事情)并在你的 if 中执行批处理中的所有语句(你也没有做的事情)。

代码将是这样的:

while (rs.next()) {
    int id = rs.getInt("id");
    String text = rs.getString("text");
    if(text == null)
        text = "";
    updatepage.setString(1, text);
    updatepage.setInt(2, id);

    //add the current statement to the batch
    updatepage.addBatch();
    if(count++ > 10000) {
        //line below will only execute the current statement (useless)
        //updatepage.executeUpdate();
        //line below will clear the batch statements (useless too)
        //updatepage.clearBatch();
        updatepage.executeBatch();
        count = 0;
    }
}
//updatepage.executeUpdate();
updatepage.executeBatch();

你能把整个代码贴出来吗?根据您提供的代码 updatepage.addBatch();/ updatepage.executeBatch();不见了。还要检查 dbConnection.setAutoCommit(false);.