Как задать список целых чисел при подготовке SQL-запросов в Java - PullRequest
3 голосов
/ 26 декабря 2008

У меня есть такой запрос - выберите * из таблицы, где ... и имя в (2,3,4)

Когда я подготавливаю запрос (... 'colname in (?)'), Используя PreparedStatement в Java, какой метод установки я должен вызвать, чтобы установить эти целые числа? Целые числа доступны в массиве int, и размер варьируется. Если это имеет значение, база данных MySQL, а рассматриваемый столбец имеет тип int.

Ответы [ 2 ]

3 голосов
/ 26 декабря 2008

Вы можете использовать другой синтаксис

WHERE colname = ANY (?)

и вызовите PreparedStatement.setArray (). Вы должны предоставить экземпляр java.sql.Array в качестве параметра. Одним из преимуществ ANY вместо IN является то, что вы можете передавать пустой массив, не вызывая синтаксической ошибки SQL.

2 голосов
/ 16 января 2009

В качестве дополнения к объяснению Обучения:

Создание массива может быть сложным.

В Connection есть метод создателя в JDK 1.6 и более поздних версиях. http://download.java.net/jdk7/docs/api/java/sql/Connection.html#createArrayOf(java.lang.String,%20java.lang.Object[])

Поскольку JDK1.6 является последней стабильной версией, ваши драйверы JDBC могут ее не поддерживать.

Вы можете попробовать создать свою собственную реализацию Array, но это может не работать со всеми реализациями JDBC-коннектора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...