我想要同时执行多个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注入攻击。
那么,这两种方法是否可以同时执行多个查询?如果没有,上面哪个更好,为什么?