使用预准备语句的变量列名
2022-08-31 20:37:53
我想知道是否有任何方法可以使用预准备语句指定返回的列名称。
我正在使用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注入漏洞。