java - 重复更新 MySQL 表中的行

标签 java mysql

我正在尝试更新已存在的 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 语句来查看调试后的运行输出如下:

enter image description here

而数据库仅包含插入的最后一行

enter image description here

最佳答案

您的 SQL 未添加 WHERE 子句来指定要更新的行。因此,在每次迭代时,列中的所有记录的 col4 字段都会更新为该值。最后一项是剩余的更新。

关于java - 重复更新 MySQL 表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12554749/

相关文章:

java - Java 中的 Base64 编码,使用 android.util.Base64

php - 抓取给定关键字前后的 x 个单词?

c# - sql中不能减

PHP 图片上传无法正常工作,但一切似乎都正确?

java - GridLayout 与尺寸不成比例

java - Parse4j 错误 JAVA Eclipse

java - 有没有一种方法可以在 java 中定义标志并仅在定义了这些标志后才运行代码?

java - 启动 Spring 批处理作业

mysql - 如何禁用MySql搜索结果中的格式字符?

php - MySQL和PHP解析奇怪的字符串