Java的MySQL的preparedStatement时批(Java MySQL prepared

2019-08-16 18:32发布

我试图使用PreparedStatement批,但我有一个问题。

下面的代码不给我的错误,但它在表中插入只在地图的最后一个关键,我不知道为什么。

这将是肯定是一个非常愚蠢的错误,但是这是我第一次使用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();

提前致谢!

Answer 1:

准备好你的声明和查询的循环之外:

      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();


Answer 2:

您正在使用addBatch()方法是错误的。 在你的代码正在做的for循环每次迭代的prepareStatement,每一次这种替换准备好的查询。

您应该只每批被调用prepareStatement一次。 你应该把准备好的声明中环(只有一个呼叫)之前



文章来源: Java MySQL preparedStatement Batch