PreparedStatement用于多个语句

时间:2016-12-21 07:56:45

标签: java sqlite jdbc prepared-statement

是否可以将PreparedStatement用于多个陈述?

,例如,我的意思是 如果 String sql = "INSERT INTO OR INGNORE ... ; UPDATE ... ; INSERT INTO ...";

PreparedStatement pre = conn.prepareStatement(sql);
//...
pre.executeUpdate();

仅执行第一个语句"INSERT INTO OR INGNORE ...(直到分号)。 是否可以一次执行所有操作?

2 个答案:

答案 0 :(得分:3)

  

是否可以一次执行所有操作?

这可能取决于数据库供应商对JDBC驱动程序的实现,但总的来说我不希望这样做。

答案 1 :(得分:1)

String[] query = { "insert into Gericht (classification,date,name,preisExtern,preisIntern) values (?,?,?,?,?)",
            "test" };
    PreparedStatement stmt;
    for (String str : query) {
        stmt = c.prepareStatement(str);
        stmt.addBatch();
    }
    stmt.executeBatch();

这是一个关于如何使用批处理的示例。如果它不是你想要的,请告诉我。

希望:

  

@XtremeBaumer如何在预准备语句中的参数发生变化?你怎么能动态地改变它?

答案:

  你不能。如果您希望一次执行多个不同的查询,则只能使用固定语句,否则您的代码将非常大,然后您可以通过设置参数并将其添加到批处理来手动执行。如果您有1个查询获得不同的参数并且您想要一次添加所有批处理,那么批处理是好的