2016-12-21 8 views
3

Можно ли использовать PreparedStatement для нескольких утверждений?ПодготовленоСтатьи для нескольких утверждений

Е.Г., я имею в виду, если String sql = "INSERT INTO OR INGNORE ... ; UPDATE ... ; INSERT INTO ..."; это

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

выполняет только первый оператор "INSERT INTO OR INGNORE ... (до запятой). Можно ли выполнить все сразу?

+0

то, что вы ищете, является периодическим. вы вставляете все инструкции в пакетную версию, а затем выполняете пакет – XtremeBaumer

+0

, существует конкретное решение mysql: http://stackoverflow.com/questions/10797794/multiple-queries-executed-in-java-in-single-statement – Vladimir

ответ

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 запрос, который получает различные параметры, и вы хотите, чтобы добавить все сразу

+0

Вы хотите показать мне как выполнить одно и то же утверждение несколько раз. Да? – Vyacheslav

+0

Посмотрите сейчас. было ли действительно трудно угадать, как использовать несколько утверждений? – XtremeBaumer

+0

@XtremeBaumer как насчет того, когда параметры в подготовленном выражении меняются? как вы можете изменить его динамически? – msagala25

3

Можно ли выполнить все сразу?

это может зависеть от реализации драйвера JDBC поставщиком базы данных, но в целом я не ожидал, что это сработает.

+0

Почему это должно зависеть от JDBC? Где вы его нашли? – Vyacheslav

+0

[API] (https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html) не определяет это поведение, поэтому разработчик JDBC может делать все, о чем она может думать. –

+0

Вот какие партии для – XtremeBaumer