Java Database Connectivity(JDBC)は、Javaアプリケーションからデータベースに接続し、データを操作するための標準APIです。この記事では、JDBCを使ってデータベースに接続し、データの取得・挿入・更新・削除を行う基本的な方法をわかりやすく解説します。
1. JDBCを使うための準備
JDBCを使うためには、以下の準備が必要です。
(1) JDBCドライバを用意する
データベースに対応するJDBCドライバをダウンロードし、プロジェクトに追加します。例えば、MySQLの場合は mysql-connector-java を使用します。
- Mavenプロジェクトであれば、以下を
pom.xmlに追加します。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
(2) データベースを準備する
接続先のデータベースを作成し、必要なテーブルやデータを用意します。
- MySQLでの例:
CREATE DATABASE exampledb;
USE exampledb;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);
2. JDBCを使った基本操作の流れ
JDBCを使ったデータベース操作は、以下の手順で行います。
(1) JDBCドライバをロードする
データベースに接続するために、JDBCドライバをロードします。
Class.forName("com.mysql.cj.jdbc.Driver");
※最近のドライバでは自動ロードがサポートされているため、省略可能です。
(2) データベースに接続する
DriverManager.getConnection を使って接続します。
String url = "jdbc:mysql://localhost:3306/exampledb";
String user = "root";
String password = "password";
Connection conn = DriverManager.getConnection(url, user, password);
(3) SQLを実行する
StatementまたはPreparedStatementを使ってSQL文を実行します。
例: データの取得
String sql = "SELECT * FROM users";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
System.out.println("ID: " + id + ", 名前: " + name + ", メール: " + email);
}
(4) リソースを解放する
使用したリソースを必ず閉じます。これにより、メモリリークを防ぎます。
conn.close();
3. JDBCを使った具体的な操作
以下は、データベースに接続して基本的な操作を行う例です。
(1) データの挿入
PreparedStatementを使うことで、SQLインジェクションのリスクを軽減できます。
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "山田太郎");
pstmt.setString(2, "taro@example.com");
pstmt.executeUpdate();
(2) データの更新
String sql = "UPDATE users SET email = ? WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "new_email@example.com");
pstmt.setInt(2, 1); // id = 1のユーザーを更新
pstmt.executeUpdate();
(3) データの削除
String sql = "DELETE FROM users WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 1); // id = 1のユーザーを削除
pstmt.executeUpdate();
(4) トランザクション処理
複数のSQL操作をまとめて実行したい場合は、トランザクションを使います。
try {
conn.setAutoCommit(false); // 自動コミットを無効化
String sql1 = "INSERT INTO users (name, email) VALUES (?, ?)";
PreparedStatement pstmt1 = conn.prepareStatement(sql1);
pstmt1.setString(1, "田中一郎");
pstmt1.setString(2, "ichiro@example.com");
pstmt1.executeUpdate();
String sql2 = "UPDATE users SET email = ? WHERE id = ?";
PreparedStatement pstmt2 = conn.prepareStatement(sql2);
pstmt2.setString(1, "updated_email@example.com");
pstmt2.setInt(2, 2);
pstmt2.executeUpdate();
conn.commit(); // 全ての操作を確定
} catch (SQLException e) {
conn.rollback(); // エラーが発生したらロールバック
e.printStackTrace();
}
4. エラーハンドリングのポイント
エラーが発生した場合に備えて、適切なエラーハンドリングを行うことが重要です。
catch (SQLException e) {
System.err.println("SQLエラー: " + e.getMessage());
e.printStackTrace();
}
また、try-with-resources構文を使うことで、リソースを自動的に解放できます。
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
// SQL操作
} catch (SQLException e) {
e.printStackTrace();
}
5. JDBCの実践例:全体のコード
以下は、JDBCを使った一連の操作を含む完全な例です。
import java.sql.*;
public class JdbcExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/exampledb";
String user = "root";
String password = "password";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
System.out.println("データベースに接続成功!");
// データの挿入
String insertSql = "INSERT INTO users (name, email) VALUES (?, ?)";
try (PreparedStatement pstmt = conn.prepareStatement(insertSql)) {
pstmt.setString(1, "佐藤花子");
pstmt.setString(2, "hanako@example.com");
pstmt.executeUpdate();
System.out.println("データを挿入しました!");
}
// データの取得
String selectSql = "SELECT * FROM users";
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(selectSql)) {
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
System.out.println("ID: " + id + ", 名前: " + name + ", メール: " + email);
}
}
} catch (SQLException e) {
System.err.println("エラーが発生しました: " + e.getMessage());
e.printStackTrace();
}
}
}
6. 次のステップ:学びを深める
JDBCはJavaプログラミングの重要なスキルの一つです。これをきっかけに、さらに深い学びを進めていきましょう。
- 「絶対にJavaプログラマーになりたい人へ」を参考に基礎を固める。
- 実践的なスキルや転職サポートを求めるなら、「サイゼントアカデミー」を活用する。
JDBCをマスターすれば、データベース操作の基礎をしっかり身につけられます。ぜひ挑戦してみてください!


コメント