SQL文を動的に生成するにはJavaを使ってどうしたらいいですか。
JavaでSQL文を変更するには、PreparedStatementを使用します。PreparedStatementは事前にコンパイルされたSQL文であり、SQLインジェクション攻撃を防ぐために、パラメーターをSQL文に実行前に渡すことができます。
PreparedStatementを使用してSQL文を変更する手順を以下に示します。
- PreparedStatementオブジェクトの作成:メソッドConnection.prepareStatementを使用して、PreparedStatementオブジェクトを作成します。パラメータにはSQLステートメントが渡され、プレースホルダ(?)を使用してパラメータの位置を示します。
String sql = "UPDATE table_name SET column1 = ?, column2 = ? WHERE condition";
PreparedStatement pstmt = conn.prepareStatement(sql);
- パラメータの設定:PreparedStatementオブジェクトのsetメソッドでパラメータの値を設定します。setメソッドの第1引数はパラメータの位置(1から開始)、第2引数はパラメータの値です。
pstmt.setString(1, value1);
pstmt.setInt(2, value2);
- SQL文の実行:PreparedStatementオブジェクトのexecuteUpdateメソッドを使用してSQL文を実行します。executeUpdateメソッドは、影響を受けた行の数を表す整数を返します。
int rows = pstmt.executeUpdate();
- リソースのクローズ:PreparedStatement オブジェクトとデータベース接続オブジェクトをクローズします。
pstmt.close();
conn.close();
PreparedStatementを使用することでSQL文を安全に変更でき、SQLインジェクション攻撃を防ぐことができます。