Мне было интересно, можно ли было указать имена возвращаемых столбцов, используя подготовленные операторы.
Я использую 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.