JavaのJDBCでINSERT・UPDATE・DELETEを実行する方法を徹底解説!初心者向けデータベース操作入門
生徒
「Javaでデータベースにデータを追加したり、更新したり、削除したりするにはどうすればいいんですか?」
先生
「JavaではJDBCを使うことで、INSERT、UPDATE、DELETEといったSQLを実行できます。データベース操作の基本ですね。」
生徒
「SELECT以外もできるんですね。具体的な書き方を知りたいです。」
先生
「では、JDBCの基本から、INSERT文、UPDATE文、DELETE文の実行方法まで順番に学んでいきましょう。」
1. JDBCとは何かを理解しよう
JDBCとは、Java Database Connectivityの略で、Javaからデータベースへ接続するための標準APIです。MySQLやPostgreSQLなどのリレーショナルデータベースと連携し、SQL文を実行できます。
Javaでデータベース操作を行うには、接続、SQLの準備、実行、切断という流れになります。INSERT、UPDATE、DELETEはデータを変更する操作であり、業務システムやWebアプリケーション開発では必須の知識です。
JDBCを使うことで、Javaアプリケーションから安全にデータベースへアクセスでき、トランザクション管理や例外処理も行えます。
2. データベースに接続する基本コード
まずはJDBCでデータベースへ接続する方法を確認しましょう。ここではMySQLを例に説明します。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JdbcConnectionExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/sampledb";
String user = "root";
String password = "password";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
System.out.println("データベース接続成功");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Connectionオブジェクトは、データベースとの接続を表します。この接続を使ってINSERTやUPDATEなどのSQLを実行します。
3. JDBCでINSERT文を実行する方法
INSERT文は、新しいデータをテーブルに追加するSQLです。JDBCではPreparedStatementを使う方法が一般的です。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class JdbcInsertExample {
public static void main(String[] args) throws Exception {
String url = "jdbc:mysql://localhost:3306/sampledb";
String user = "root";
String password = "password";
String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "Taro");
pstmt.setInt(2, 25);
int result = pstmt.executeUpdate();
System.out.println(result + "件のデータを追加しました");
}
}
}
1件のデータを追加しました
executeUpdateメソッドは、INSERT、UPDATE、DELETEで使用します。戻り値は影響を受けた行数です。これにより処理結果を確認できます。
4. JDBCでUPDATE文を実行する方法
UPDATE文は既存のデータを更新するSQLです。業務システムでは情報修正処理として頻繁に使用されます。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class JdbcUpdateExample {
public static void main(String[] args) throws Exception {
String url = "jdbc:mysql://localhost:3306/sampledb";
String user = "root";
String password = "password";
String sql = "UPDATE users SET age = ? WHERE name = ?";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, 30);
pstmt.setString(2, "Taro");
int result = pstmt.executeUpdate();
System.out.println(result + "件のデータを更新しました");
}
}
}
1件のデータを更新しました
WHERE句を必ず指定することで、意図しない全件更新を防ぐことが重要です。Java JDBCでは安全なSQL実行が大切です。
5. JDBCでDELETE文を実行する方法
DELETE文は不要なデータを削除するSQLです。誤って実行するとデータが消えてしまうため注意が必要です。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class JdbcDeleteExample {
public static void main(String[] args) throws Exception {
String url = "jdbc:mysql://localhost:3306/sampledb";
String user = "root";
String password = "password";
String sql = "DELETE FROM users WHERE name = ?";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "Taro");
int result = pstmt.executeUpdate();
System.out.println(result + "件のデータを削除しました");
}
}
}
1件のデータを削除しました
削除前にSELECTで確認するなど、安全な運用を心がけることが実務では重要です。
6. PreparedStatementを使う理由とSQLインジェクション対策
JDBCでPreparedStatementを使う最大の理由は、SQLインジェクション対策です。ユーザー入力を直接文字列連結すると危険です。
プレースホルダを使用することで、安全に値をバインドできます。Javaのデータベースプログラミングでは必須の知識です。
また、パフォーマンス面でもPreparedStatementは有利です。繰り返し実行する場合に効率的です。
7. トランザクション管理の基本
INSERT、UPDATE、DELETEを複数実行する場合はトランザクション管理が重要です。commitやrollbackを使ってデータ整合性を保ちます。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class JdbcTransactionExample {
public static void main(String[] args) throws Exception {
String url = "jdbc:mysql://localhost:3306/sampledb";
String user = "root";
String password = "password";
Connection conn = DriverManager.getConnection(url, user, password);
conn.setAutoCommit(false);
try {
PreparedStatement pstmt1 = conn.prepareStatement(
"UPDATE users SET age = 40 WHERE name = 'Jiro'");
pstmt1.executeUpdate();
PreparedStatement pstmt2 = conn.prepareStatement(
"DELETE FROM users WHERE name = 'Saburo'");
pstmt2.executeUpdate();
conn.commit();
System.out.println("トランザクション成功");
} catch (Exception e) {
conn.rollback();
System.out.println("トランザクション失敗 ロールバック実行");
} finally {
conn.close();
}
}
}
トランザクション管理は、Java JDBCを使ったデータベース更新処理では非常に重要です。業務アプリケーション開発では必ず理解しておきましょう。
まとめ
今回はJavaのJDBCを使ってデータベースへINSERT、UPDATE、DELETEを実行する方法について詳しく解説しました。Javaによるデータベース操作は、業務システム開発やWebアプリケーション開発において欠かせない重要な技術です。JDBCの基本であるConnectionの取得方法から始まり、PreparedStatementを使った安全なSQL実行、executeUpdateによる更新件数の確認方法、さらにトランザクション管理まで一連の流れを理解することができました。
JDBCではまずDriverManagerを利用してデータベースへ接続し、Connectionオブジェクトを取得します。その後、INSERT文、UPDATE文、DELETE文といったデータ変更系SQLをPreparedStatementで準備し、executeUpdateメソッドで実行します。戻り値として影響行数を取得できるため、処理が成功したかどうかを確認できます。Javaのデータベースプログラミングでは、この更新件数の確認が非常に重要です。
特に初心者が注意すべきポイントは、WHERE句を必ず指定することです。UPDATE文やDELETE文でWHERE句を省略すると、全件更新や全件削除といった重大な事故につながります。実務では必ず条件を明確にし、事前にSELECT文で対象データを確認してから実行することが安全な運用につながります。
また、PreparedStatementを利用することでSQLインジェクション対策が可能になります。ユーザー入力を文字列連結でSQLに埋め込む方法は非常に危険です。プレースホルダを使って値をバインドすることで、安全性と保守性が向上します。Javaとデータベースを連携させる際には、必ずPreparedStatementを利用する習慣を身につけましょう。
さらに、複数のINSERTやUPDATE、DELETEをまとめて実行する場合は、トランザクション管理が重要です。setAutoCommitをfalseに設定し、commitとrollbackを適切に使い分けることで、データ整合性を維持できます。トランザクション処理は業務アプリケーションでは必須の知識であり、JavaのJDBCを扱うエンジニアにとって基礎中の基礎です。
JavaのJDBCによるデータベース操作は、単なるSQL実行だけでなく、安全性、信頼性、保守性を考慮した設計が求められます。INSERTでデータを追加し、UPDATEで情報を修正し、DELETEで不要データを削除する。この一連の流れを理解することで、実践的なデータベースアプリケーション開発へと一歩近づくことができます。
サンプルプログラムの総復習
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class JdbcSummaryExample {
public static void main(String[] args) throws Exception {
String url = "jdbc:mysql://localhost:3306/sampledb";
String user = "root";
String password = "password";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
String insertSql = "INSERT INTO users (name, age) VALUES (?, ?)";
PreparedStatement insertStmt = conn.prepareStatement(insertSql);
insertStmt.setString(1, "Hanako");
insertStmt.setInt(2, 28);
insertStmt.executeUpdate();
String updateSql = "UPDATE users SET age = ? WHERE name = ?";
PreparedStatement updateStmt = conn.prepareStatement(updateSql);
updateStmt.setInt(1, 29);
updateStmt.setString(2, "Hanako");
updateStmt.executeUpdate();
String deleteSql = "DELETE FROM users WHERE name = ?";
PreparedStatement deleteStmt = conn.prepareStatement(deleteSql);
deleteStmt.setString(1, "Hanako");
deleteStmt.executeUpdate();
System.out.println("一連のデータベース操作が完了しました");
}
}
}
一連のデータベース操作が完了しました
生徒
JavaのJDBCを使えば、INSERTやUPDATEやDELETEを安全に実行できることが分かりました。Connectionを取得してPreparedStatementを使う流れが大切なのですね。
先生
その通りです。Javaのデータベース操作では、接続、SQL準備、実行、切断という基本の流れを確実に理解することが重要です。
生徒
executeUpdateで更新件数を確認できるのも安心ですね。WHERE句を必ず書くことも忘れません。
先生
さらにトランザクション管理も重要です。commitとrollbackを使いこなせるようになると、実務レベルのJavaデータベースプログラミングに近づきます。
生徒
PreparedStatementを使うことでSQLインジェクション対策になることも理解できました。安全なWebアプリケーション開発には必須ですね。
先生
その理解はとても大切です。JavaとJDBCを正しく使い、INSERT、UPDATE、DELETEを安全に実行できるようになれば、データベース連携アプリケーションの基礎は完成です。