JDBC
サーブレットでデータベース(Oracle10)への接続に使用しています。
以下は、3 つのパラメーターを動的に設定するクエリです。
- テーブル名
- 列名
- 価値
クエリ:
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)
Edit1にし
たい理由はparameterize
、ユーザーがテーブル名と列名を選択/入力できるようにしているため、.Table name
Column name
SQL Injection