Обновление с JDBC для нескольких строк - PullRequest
1 голос
/ 28 декабря 2011

У меня есть очень простая SQL "таблица обновлений, где ID в (1,2,3)"

Когда я делаю

String sql = "update table where ID in (?)";
List<Integer> ids = new ArrayList();
ids.add(1);
ids.add(2);
ids.add(3);
jdbc.update(sql, new Object[] { ids });

Я получаю неправильный SQL в выводе

update table where ID in ('1,2,3')

Как мне избавиться от этой дополнительной цитаты?

Ответы [ 2 ]

4 голосов
/ 28 декабря 2011

К сожалению, вы не можете передать Array как Parameter в PreparedStatement.Подобный вопрос может быть найден здесь:

Альтернативные предложения PreparedStatement IN?

И некоторые альтернативы можно найти здесь:

http://www.javaranch.com/journal/200510/Journal200510.jsp#a2

0 голосов
/ 28 декабря 2011

Ваш оператор SQL должен иметь форму:

UPDATE table_name
SET column1=?, column2=?,...
WHERE some_column=some_value

т.е. обратите внимание, что

  • Вы должны указать столбцы, которые хотите обновить
  • для каждого значения, которое вам нужно предоставить, вам нужен заполнитель ? символ
  • для каждого значения необходим соответствующий setInt(pos, value) вызов

Дополнительные сведения см. В учебнике PreparedStatement . Выдержка ниже:

String updateString =
    "update " + dbName + ".COFFEES " +
    "set SALES = ? where COF_NAME = ?";
updateSales = con.prepareStatement(updateString);
updateSales.setInt(1, 100);
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...