JDBCのPreparedStatementの詳細

JDBCのPreparedStatementは、プリコンパイルされたSQL文を実行するためのインターフェースです。Statementインターフェースと比べて、PreparedStatementを使用するとデータベースのパフォーマンスと安全性が向上します。以下にPreparedStatementの使用方法を詳しく説明します。1. PreparedStatementオブジェクトの作成:
データベースに接続後、ConnectionオブジェクトのprepareStatement()メソッドを使用してPreparedStatementオブジェクトを作成できます。このメソッドは、SQL文を含む文字列を引数として受け取ります。
“`java
Connection conn = DriverManager.getConnection(url, username, password);
String sql = “SELECT * FROM users WHERE id = ?”;
PreparedStatement pstmt = conn.prepareStatement(sql);
“`2. パラメータの設定:
PreparedStatementオブジェクトは、SQL文内のパラメータを設定するためのsetXXXメソッドのシリーズを提供します。これらのメソッドのパラメータには、パラメータインデックス(カウントは1から開始)とパラメータ値が含まれます。
“`java
int userId = 1;
pstmt.setInt(1, userId);
“`
注意:PreparedStatementオブジェクトのパラメータインデックスは、1からカウントを開始します。3. クエリの発行:
PreparedStatementオブジェクトのexecuteQuery()メソッドを使用してクエリ文を発行し、ResultSetオブジェクトを返します。
“`java
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
// 結果セットを処理
}
“`4. 更新の実行:
PreparedStatementオブジェクトのexecuteUpdate()メソッドを使用して、更新文(INSERT、UPDATE、DELETEなど)を発行し、影響を受けた行数を返します。
“`java
int rowsAffected = pstmt.executeUpdate();
“`5. バッチ更新:
PreparedStatementオブジェクトは、addBatch()メソッドとexecuteBatch()メソッドも提供しており、バッチ更新操作を実行するために使用されます。addBatch()メソッドはSQL文をバッチに追加し、executeBatch()メソッドがバッチ処理操作を実行します。
“`java
pstmt.addBatch();
pstmt.executeBatch();
“`
注意:executeBatch()メソッドを実行する前に、pstmt.clearBatch()メソッドを呼び出してバッチをクリアする必要があります。6. リソースのクローズ:
PreparedStatementオブジェクトを使用した後、ResultSetとPreparedStatementオブジェクトを含む関連リソースをクローズする必要があります。リソースのクローズにはclose()メソッドを使用できます。
“`java
rs.close();
pstmt.close();
conn.close();
“`
注意:リソースのクローズ順序は、ResultSet、PreparedStatement、Connectionの順序でなければなりません。PreparedStatementを使用すると、SQLインジェクション攻撃を効果的に防ぐことができ、データベースのパフォーマンスが向上します。これは、データベースがプリコンパイルされたSQL文をキャッシュして最適化できるためです。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds