В вашем запросе есть 3 точки:
SELECT NU_OS, CD_ESTRATEGIA, CD_STATUS, NU_MATR, DT_ABERTURA" +
"FROM tb_bkoffice_os"+
"WHERE NU_OS ="+ NuOs +""
- пробел до пропущенного ОТ первой части запроса:
SELECT NU_OS, CD_ESTRATEGIA, CD_STATUS, NU_MATR, DT_ABERTURAFROM
- пробел пропущен перед ГДЕ:
SELECT NU_OS, CD_ESTRATEGIA, CD_STATUS, NU_MATR, DT_ABERTURAFROM tb_bkoffice_osWHERE NU_OS =
- Параметр объединения в строку SQL является точной точкой взлома для атаки SQL-инъекцией.Никогда не делайте это в реальной программе, даже если она чисто автономная.Всегда используйте параметры для запросов.
и немного последний: + NuOs +""
- последний "" вообще не имеет смысла ...
удачи.
UPD: @YCF_L абсолютно правильно использовать подготовленный оператор.
вам нужно сделать это: в строке Sql: WHERE NU_OS = ?
в коде:
PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1, NuOs);
//also works: stmt.setObject(1,NuOs);
вещей дляпомните с JDBC:
- все параметры в SQL просто?отметки
- индексы параметров начинаются с 1 (не 0)
- и в порядке их появления в SQL от strat до конца
(например, Select * FROM tbl WHERE col1=? and col2=?
имеет параметр 1для col1 и параметр 2 для col2
PS. Ваш исходный SQL имеет еще одну ошибку, но я не собираюсь рассказывать вам, что это :-) используйте параметр и все будет хорошо.