Подготовленный оператор Java не допускает больших строк в предложении where запроса

#java #prepared-statement #resultset

#java #подготовленный оператор #набор результатов

Вопрос:

Я пытаюсь извлечь данные из DB2, используя подготовленный оператор Java

 String select_statement = "SELECT * FROM schema_name.table_name where NME='xxx002' and LINE =7200 and FILE_NME='720001042021XYZ002' with ur";

try (Connection connection = DataBaseConnection.getGeoCarDBConnection_TESTDATA(); 
                PreparedStatement ps = connection.prepareStatement(select_statement);)  {
        ResultSet rs = null;
        rs = ps.executeQuery();
}

 

Проблема, с которой я сталкиваюсь, заключается в том, что я включаю FILE_NME в предложение where запроса, как показано выше, возвращается 0 строк. Но могут быть переданы любые другие строковые поля, и я получаю желаемое количество строк.

Любые integer поля в предложении where тоже работают. Но string не работают только большие поля (в данном случае FILE_NME field ). В таблице DB2, из которой я извлекаю данные, FILE_NME поле of varchar(30) .

То, что не сработало для меня, было

 String select_statement = "SELECT * FROM schema_name.table_name where NME='xxx002' and LINE =7200 and FILE_NME = ? with ur";
 

затем я устанавливаю строковое значение, используя,

 ps.setString(1, "'720001042021XYZ002'")

ps.setString(1, "720001042021XYZ002")
 

Оба не сработали.

Ни одна из ссылок Google не была полезной. Потратил на это больше дня.

Раньше этот код работал безупречно, даже версия Java не изменилась (насколько мне известно)

Я запускаю его в Windows 10.

Версия Java: 1.8 ((сборка 1.8.0_221-b11))

Я запускаю тот же запрос в клиенте базы данных, и он работает.

Кто-нибудь, пожалуйста, помогите мне или укажите мне правильное направление. Я не знаю, чего мне не хватает

Заранее благодарю

Ответ №1:

Проблема заключалась в том, что данных действительно не было, я проверял тот же запрос в клиенте базы данных в другой среде. Я закрываю это дело.