java mysql preparedstatement批处理

7ivaypg9  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(435)

我正在尝试使用preparedstatement批处理,但遇到问题。
下面的代码没有给我错误,但它只在表中插入Map的最后一个键,我不知道为什么。
这肯定是一个非常愚蠢的错误,但这是我第一次使用addbatch()方法。。

Class.forName("com.mysql.jdbc.Driver");
        this.connect = DriverManager.getConnection("jdbc:mysql://localhost/" + this.database + "?user=" + this.user + "&password=" + this.password);
        String s;
        for (String key : this.map.keySet())
        {
            s = ("insert into " + this.database + ".user (nickname) values (?)");
            this.preparedStatement = this.connect.prepareStatement(s);
            this.preparedStatement.setString(1, key);
            this.preparedStatement.addBatch();
        }

        this.preparedStatement.executeBatch();

提前谢谢!

5fjcxozz

5fjcxozz1#

您使用的addbatch()方法错误。在您的代码中,您在for循环的每次迭代中都执行preparestatement,并且每次都替换prepared查询。
每批只能调用一次preparestatement。您应该将准备好的语句放在循环之前(只有一个调用)

pqwbnv8z

pqwbnv8z2#

在循环外准备语句和查询:

s = ("insert into " + this.database + ".user (nickname) values (?)");
      this.preparedStatement = this.connect.prepareStatement(s);
      for (String key : this.map.keySet())
        {
            this.preparedStatement.setString(1, key);
            this.preparedStatement.addBatch();
        }
        this.preparedStatement.executeBatch();

相关问题