【发布时间】:2013-07-09 07:20:31
【问题描述】:
我正在使用JDBC 连接到 Servlets 中的数据库 (Oracle10)。
以下是我想要动态设置三个参数的查询。
- 表名
- 列名
- 价值
查询:
query = "select ? from ? where ? = ?";
mypstmt = con.prepareStatement(query);
mypstmt.setString(1, tableName);
mypstmt.setString(2, columnName);
mypstmt.setString(3, columnName2);
mypstmt.setString(4, value);
但上面的查询给了我错误:
java.sql.SQLException: ORA-00903: invalid table name
我检查了表名。这是正确的,如果我这样写查询:
query = "select "+columnName+" from "+tableName+" where "+columnName2+" = ?";
然后它执行得很好。
那么如果我想将Table name和Column Names设置为mypstmt.setString(1,tableName)该怎么办
编辑1
我之所以想parameterizeTable name 和Column name 是因为我允许用户选择/输入表名和列名,所以我想避免SQL Injection。
【问题讨论】: