Мне было интересно, можно ли указать имена возвращаемых столбцов с помощью подготовленных операторов.
Я использую MySQL и Java.
Когда я пробую это:
String columnNames="d,e,f"; //Actually from the user...
String name = "some_table"; //From user...
String query = "SELECT a,b,c,? FROM " + name + " WHERE d=?";//...
stmt = conn.prepareStatement(query);
stmt.setString(1, columnNames);
stmt.setString(2, "x");
Я получаю этот тип оператора (печать прямо перед выполнением).
SELECT a,b,c,'d,e,f' FROM some_table WHERE d='x'
Однако хотелось бы увидеть:
SELECT a,b,c,d,e,f FROM some_table WHERE d='x'
Я знаю, что не могу сделать это для имен таблиц, как обсуждалось здесь , но мне было интересно, есть ли способ сделать это для имен столбцов.
Если нет, то мне просто нужно попытаться убедиться, что я очищаю ввод, чтобы он не приводил к уязвимостям SQL-инъекций.