PreparedStatementはJDBCのなに?
JDBCのPreparedStatementはデータベースでプリコンパイルされたSQL文オブジェクトであり、ステートメントインターフェースを継承し、パラメーター付きSQLを実行するために利用されます。
Statement とは異なり、PreparedStatement は SQL 文を事前にコンパイルしてコンパイル結果をキャッシュすることで、以降の実行時に直接利用できるため、実行効率を向上させます。パラメータの位置はプレースホルダ(?)で示され、パラメータの値を設定することでプレースホルダに置き換えます。
プリペアドステートメントを使うことで、SQLインジェクション攻撃を防ぎ、同じプリコンパイル済みSQL文を再利用でき、パフォーマンスを向上させられます。
PreparedStatementのsetXXX()系のメソッドを呼び出してSQL文にパラメーターの値を設定し、executeUpdate()、executeQuery()等のメソッドを呼び出すことでSQL文を実行する。
例えば、パラメーター付きの挿入ステートメントを実行するためにPreparedStatementを使用する手順は次のとおりです。
- INSERT INTO table_name (column1, column2) VALUES (?, ?) という SQL ステートメントを実行する PreparedStatement オブジェクトを作成します。
- パラメータに値を設定:preparestatement.setString(1、value1)preparestatement.setString(2、value2)
- SQL文を実行:ps.executeUpdate() ;
PreparedStatementの作成したINSERTステートメントの実行後、自動採番された主キーを取得するにはgetGeneratedKeys() メソッドを呼び出します。