相关疑难解决方法(0)

使用预准备语句的变量列名称

我想知道是否还有使用预准备语句指定返回的列名.

我正在使用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");
Run Code Online (Sandbox Code Playgroud)

我得到这种类型的声明(在执行之前打印).

SELECT a,b,c,'d,e,f' FROM some_table WHERE d='x'
Run Code Online (Sandbox Code Playgroud)

不过我想看到:

SELECT a,b,c,d,e,f FROM some_table WHERE d='x'
Run Code Online (Sandbox Code Playgroud)

我知道我不能这样做表名,正如这里讨论的那样 ,但是想知道是否有某种方法可以为列名做这些.

如果没有,那么我将只需要尝试确保我清理输入,这样就不会导致SQL注入漏洞.

java sql jdbc prepared-statement

38
推荐指数
3
解决办法
4万
查看次数

标签 统计

java ×1

jdbc ×1

prepared-statement ×1

sql ×1