последний SQL-оператор выглядит примерно так:
select col_1 from table_X where col_2 = 'abcd';
Я запускаю это в своей среде SQL IDE, и все в порядке.
Далее я пытаюсь построить этот оператор с помощью Java:
String queryString= "select col_1 from table_X where col_2 = '?';";
PreparedStatement stmt = con.prepareStatement(queryString);
stmt.setString(1, "abcd"); //raises java.sql.SQLException: Invalid column index
Хотя оператор sql (первый, запущенный для базы данных) содержит кавычки вокруг строковых значений, а также завершается точкой с запятой, строка, которую я передаю в PreparedStatement, не должна содержать кавычек вокруг подстановочного знакасимвол?, и при этом он не должен заканчиваться точкой с запятой.
Я просто удалил символы, которые появляются на белом фоне
"select col_1 from table_X where col_2 =
' ?
'; ";
для получения
"select col_1 from table_X where col_2 = ?";
(я нашел решение здесь: https://coderanch.com/t/424689/databases/java-sql-SQLException-Invalid-column)