はじめに
今回は、JavaでMySQLデータベースからデータの登録・更新・削除する方法について勉強したことを記載していきたいと思います。
前提
前提として、データベースの接続を実施することができること。
以下記事を参考にしてみてください。
【Java】MySQLデータベースの接続方法について(接続からSQL発行まで) – SEもりのLog java
登録(INSERT)
データベースに登録するには、「PreparedStatement」クラスを使用します。実際クエリを発行するメソッドはexecuteUpdate()でINSERT文を設定しておくことで設定したクエリを実行します。
「?」の文字列を使用することでパラメータを自由に変更することも可能です。
例
public int testInsert() {
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS)) {
System.out.println("接続成功");
String insertSQL = "INSERT INTO test_database.test(id, name) VALUES (?, ?)";
try (PreparedStatement ps = conn.prepareStatement(insertSQL)) {
ps.setLong(1, 1);
ps.setString(2, "test");
int result = ps.executeUpdate();
return result;
} catch(SQLException se) {
se.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
} catch(SQLException se) {
se.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
return 0;
}
更新(UPDATE)
データの更新も同様に「PreparedStatement」クラスを使用します。実際クエリを発行するメソッドはexecuteUpdate()でUPDATE文を設定しておくことで設定したクエリを実行します。
例
public int testUpdate() {
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS)) {
System.out.println("接続成功");
String insertSQL = "UPDATE test_database.test SET name = ? WHERE id = ?";
try (PreparedStatement ps = conn.prepareStatement(insertSQL)) {
ps.setString(1, "test2");
ps.setLong(2, 1);
int result = ps.executeUpdate();
return result;
} catch(SQLException se) {
se.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
} catch(SQLException se) {
se.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
return 0;
}
削除(DELETE)
データの削除も同様に「PreparedStatement」クラスを使用します。
例
public int testDelete() {
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS)) {
System.out.println("接続成功");
String insertSQL = "DELETE FROM test_database.test WHERE id = ?";
try (PreparedStatement ps = conn.prepareStatement(insertSQL)) {
ps.setLong(1, 1);
int result = ps.executeUpdate();
return result;
} catch(SQLException se) {
se.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
} catch(SQLException se) {
se.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
return 0;
}
トランザクション制御について
Javaでトランザクションの制御をする場合、自動コミットモードを無効にすることで可能となります。INSERT/UPDATE/DELETE等が発生するとトランザクションが発行され、コミット/ロールバックされるまでトランザクション制御が発生します。
例
public int testInsert() {
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS)) {
System.out.println("接続成功");
// オートコミットをfalseに設定
conn.setAutoCommit(false);
String insertSQL = "INSERT INTO test_database.test(id, name) VALUES (?, ?)";
try (PreparedStatement ps = conn.prepareStatement(insertSQL)) {
ps.setLong(1, 1);
ps.setString(2, "test");
int result = ps.executeUpdate();
// コミット
conn.commit();
return result;
} catch(SQLException se) {
// ロールバック
conn.rollback();
se.printStackTrace();
} catch(Exception e) {
// ロールバック
conn.rollback();
e.printStackTrace();
}
} catch(SQLException se) {
se.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
return 0;
}
ドキュメント
【MySQL】
MySQL
最後に
Javaの環境構築は、この記事を参照してみてください。
【開発環境構築】VS CodeでJavaを使用するための環境構築を実施する – SEもりのLog (selifemorizo.com)
以上、ログになります。
これからも継続していきましょう!!
コメント