Java PreparedStatmentオブジェクトを使用して、一連のバッチ処理されたINSERTクエリを作成しています。クエリステートメントは、その両方のフィールドの値とテーブル名は、変数(つまり、ある... ...フォーマットのJavaプリペアドステートメントのtablename変数の使用方法insert
String strQuery = "INSERT INTO ? (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);";
です。私は、それぞれのインサートがに送られますその同じ列の形式で複数のテーブルを持っています異なるもの)。私が "?"を削除すれば、実行することができます。テーブル名の変数とハードコードが、それぞれ準備されたステートメントは、別のテーブルに挿入されますので、どのように私はこれが動的にさせることができます
stmt.setString(1, "tableName1");
...私はすぐに使用してバッチクエリを実行する前に取り込む変数を維持する必要があります変えてください?
ありがとうございました...それぞれの行の変数を交換する時点まで挿入したいtablenameがわからないので、DBストアドプロシージャ内に挿入するのが最善の方法です。次に、各行のすべてのパラメータをストアドプロシージャに渡し、DBにtablename操作を処理させます。とにかく人々の応答に感謝します。 :-) – ForestSDMC
ダイナミックテーブル名でSQLインジェクションの保護が不可能なのでしょうか? –
@リチャード私は同じ結論に達しました。それは馬鹿しく聞こえますが、少なくとも、データベース内の使用可能なテーブルのリストに対してテーブル名をチェックする方が簡単です。 – JulienD