我正在尝试更新已存在的 MySQL 表中的列。必须从文本文件中读取值,然后将它们插入到指定的列中。
我尝试过以下方法:
int counter=0;
while((fileLine=in.readLine())!=null)
{
System.out.println("Line read is: "+fileLine);
//execute db insertion
try {
//insert in the database
Query= "update db.table set col4=?"; //database
preparedStmt3 = DBConnection.con.prepareStatement(Query);
preparedStmt3.setString (1, fileLine);
preparedStmt3.executeUpdate();
System.out.println("Complete update statement for row: "+counter);
counter++;
} catch (Exception e) {
System.out.println("DB_Error:_"+ e.toString());
}
} //end while loop
我尝试输出 fileLine
值,它似乎是正确的,并且每次循环都会正确更改。但是,在我运行程序并检查数据库后,我发现插入的值只是最后一行(并且这在所有记录中重复,这不是我应该做的,即插入记录中的每一行) 。这个问题的原因是什么?
编辑: 该文本文件包含以下行: 啊啊 bbb ccc 滴滴 伊伊 fff
添加一些 printline
语句来查看调试后的运行输出如下:
而数据库仅包含插入的最后一行
最佳答案
您的 SQL 未添加 WHERE 子句来指定要更新的行。因此,在每次迭代时,列中的所有记录的 col4
字段都会更新为该值。最后一项是剩余的更新。
关于java - 重复更新 MySQL 表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12554749/