Это кажется простым, но это невозможно искать в Интернете ...Как использовать MySQL IN функции сравнения с JDBC
У меня есть унаследованное приложение, которое использует JDBC непосредственно без каких-либо рамок, и у меня добавить некоторые новые функции. У меня возникают проблемы с поиском, как использовать функцию IN() через JDBC.
Я хотел бы иметь запрос как следующий
SELECT * from animals WHERE animal_name IN (...)
Где ... это массив значений. Используя JDBC, я подумал бы, что сделаю следующее.
PreparedStatement st = conn.prepareStatement("SELECT * from animals WHERE animal_name IN (?);");
st.setArray(arrayVals);
ResultSet rs = st.executeQuery();
....
Но это не сработает, и я обнаружил, что почти невозможно найти ссылку на это в Интернете.
Это потому, что параметры PreparedStatement представляют собой одно значение на основе типа данных, а не список полей с разделителями-запятыми. Создайте SQL-запрос как строку перед 'conn.prepareStatement (...', если вы хотите использовать динамический SQL вне базы данных. –
Просто наблюдение, но вы уверены, что вам нужна точка с запятой в конце инструкции? –
Возможный дубликат [Какой лучший подход использует JDBC для параметризации предложения IN?] (Http://stackoverflow.com/questions/2861230/what-is-the-best-approach-using-jdbc-for-parameterizing- an-in-clause) – BalusC