在Java sql中添加多个Prepared Statements

时间:2012-12-02 20:36:59

标签: java sql string batch-file prepared-statement

我想要同时执行多个SQL预处理语句。到目前为止,我一直在使用一个看起来或多或少像这样的预处理语句方法:

    public PreparedStatement createWordEntry(Connection c, String word, String word2, int num) throws SQLException{
        PreparedStatement entry = c.prepareStatement("INSERT INTO table VALUES(?,?,?)");
        entry.setString(1, word);
        entry.setString(2, word2);
        entry.setInt(3,num);
        return entry;
    }

最初,我尝试将这些添加到向量/数组并一次执行一个,但由于使用了resultSets和索引的复杂性,我不断得到“jdbc4.MySQLNonTransientConnectionException:语句关闭后不允许任何操作”

然后我研究了将所有语句添加到批处理中并立即执行。当然,addBatch()需要一个字符串而不是PreparedStatement作为参数。当我在这个网站上搜索时,我找到了这个答案:How to generate String "elegantly" in Java?建议构建和格式化字符串以添加到批处理中,使代码容易受到SQL注入攻击。

那么,这两种方法是否可以同时执行多个查询?如果没有,上面哪个更好,为什么?

1 个答案:

答案 0 :(得分:0)

有多种addBatch方法。

您应该以与您相同的方式设置参数,然后使用PreparedStatement声明的void addBatch()