SQLクエリの実行

JavaのJDBC(Java Database Connectivity)を使ってSQLクエリを実行する際の基本的な流れについて詳しく説明します。JDBCを利用することで、Javaプログラムからリレーショナルデータベースにアクセスし、SQLを用いてデータの操作や取得が可能になります。


1. 必要な準備

JDBCを使ってSQLクエリを実行するには、以下の手順を踏みます。

(1) JDBCドライバのロード

使用するデータベースに対応したJDBCドライバをクラスパスに追加し、Class.forNameなどでロードします(JDBC 4.0以降は自動ロードされることもあります)。

java
Class.forName("com.mysql.cj.jdbc.Driver");

(2) データベースへの接続

DriverManager.getConnectionを使って、接続を確立します。

java
Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/sampledb", "username", "password");

2. SQLクエリの種類と実行方法

SQLクエリには主に以下の2種類があり、それぞれの実行方法が異なります。

データ操作系(DML)クエリ

  • INSERT、UPDATE、DELETEなど

  • executeUpdate()メソッドを使用

  • 戻り値は「影響を受けた行数(int型)」

java
Statement stmt = conn.createStatement(); int rows = stmt.executeUpdate("UPDATE users SET age = 30 WHERE id = 1"); System.out.println(rows + " row(s) updated.");

データ検索系(SELECT)クエリ

  • SELECT文

  • executeQuery()メソッドを使用

  • 戻り値はResultSetオブジェクト(結果セット)

java
Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT id, name FROM users"); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("ID: " + id + ", Name: " + name); }

3. PreparedStatementの使用(推奨)

SQLインジェクション対策やパフォーマンス向上のために、PreparedStatementの使用が推奨されます。

java
String sql = "INSERT INTO users (name, age) VALUES (?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "Taro"); pstmt.setInt(2, 25); int inserted = pstmt.executeUpdate(); System.out.println(inserted + " row(s) inserted.");

4. リソースのクローズ

JDBCリソース(ResultSetStatementConnectionなど)は必ずクローズする必要があります。try-with-resources構文を使用すると安全です。

java
try (Connection conn = DriverManager.getConnection(...); PreparedStatement pstmt = conn.prepareStatement(...)) { // クエリの実行処理 }

まとめ

JDBCを用いたSQLクエリの実行には、以下のステップが必要です:

  1. JDBCドライバのロード

  2. データベースへの接続

  3. StatementPreparedStatementの作成

  4. executeUpdate()executeQuery()によるSQL実行

  5. 結果の処理

  6. リソースの解放

クエリの種類に応じて適切なメソッドを選び、安全性の高いPreparedStatementの使用を心がけることが重要です。

生成日:2025/05/03