JavaでMySQLに接続してinsert文でデータを追加する

今回の記事ではJavaでMySQLに接続してinsert文によってデータを追加する方法を解説していきます。

前提としてMySQL側でデータベースとテーブルが準備されていることとします。準備ができていない方はこちらの記事を参考にしながら準備を進めてください。使うデータベース名やテーブル名は以下の通りです。

  • データベース名:testdb
  • テーブル名:test_table
  • user: root
  • password: rootpass

なおtest_tableはintのidとvarcharのnameをカラムとして持つテーブルになります。

サンプルコード

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class Insert {
	public static void main(String[] args) {
		String url = "jdbc:mysql://localhost:3306/testdb";
		String user = "root";
		String password = "rootpass";

		try (Connection con = DriverManager.getConnection(url, user, password);
				PreparedStatement preStatement = con.prepareStatement("insert into test_table values(?, ?);")) {
			Scanner sc = new Scanner(System.in);
			System.out.print("idを入力してください");
			int id = Integer.parseInt(sc.nextLine());

			System.out.print("名前を入力してください");
			String name = sc.nextLine();

			preStatement.setInt(1, id);
			preStatement.setString(2, name);
			int count = preStatement.executeUpdate();
		}catch (SQLException e) {
			e.printStackTrace();
		}finally {
			System.out.println("人間を追加しました。");
		}
	}
}

以下細かく解説していきます。

データベースと接続

String url = "jdbc:mysql://localhost:3306/testdb";
String user = "root";
tring password = "rootpass";

try (Connection con = DriverManager.getConnection(url, user, password);

まずはデータベースと接続するための準備が記述してあります。urlやuser、passwordといった変数を準備してそれをDribeManagerのgetConnectionメソッドに引数として渡します。これによってconnectionオブジェクトを利用することができるようになります。

実行したいSQL文を準備

PreparedStatement preStatement = con.prepareStatement("insert into test_table values(?, ?);")) {

次に先ほど取得したConnectionオブジェクトのprepareStatementメソッドの引数に実行したいSQL文を渡します。この時状況に応じて変更したい部分を?と記述しておきます。PreparedStatementメソッドが返ってくるのでそれを変数に格納しておきます。

insert文の実行

Scanner sc = new Scanner(System.in);
System.out.print("idを入力してください");
int id = Integer.parseInt(sc.nextLine());

System.out.print("名前を入力してください");
String name = sc.nextLine();

preStatement.setInt(1, id);
preStatement.setString(2, name);
int count = preStatement.executeUpdate();

今回はユーザから追加したい人物のidとnameを入力してもらってその値に応じたデータをテーブルに追加していく仕様にしました。そのためScannerクラスを使っています。int型のidとString型のnameにそれぞれユーザからの入力を格納します。

ここからが本題になりますが、preparedStatementオブジェクトのsetIntやsetStringを使うことで最初に準備したSQL文の?部分に値を入れることができます。今回は1番目の?にidを入れたいので、setIntの第一引数に1を渡し、第二引数に実際にデータとして入れたいidを渡します。setStringも同じ要領でユーザから受け取ったnameを入れます。

これをすることで

insert into test_table values(?, ?);

だったSQL文が

insert into test_table values(id, name);

こうなります。

 



動作確認

上記プログラムを実行してみます。

idを入力してください5
名前を入力してください石原太郎
人間を追加しました。

実行した後、MySQL、もしくはJavaプログラムでselect文を実行すると先ほど追加したレコードが存在するはずです。

おすすめの参考書

 

私はプログラミング学習はUdemyで行うのが以下のような理由で圧倒的におすすめです。

  • 動画で好きなときに学べる
  • 一流のエンジニアから教えてもらえる
  • 好きな技術を体系的に学べる
  • 実際に手を動かしながら学ぶことができる
  • セール時であれば1500円〜2000円ほどで購入できる(大半の技術書より安い)
  • 講座自体がアップデートされていくので情報が古くなりにくい
  • UdemyにはJava x MySQLでWebアプリの作り方が学べる講座 もあるので興味がある方は一度チェックしてみてください!

    コメント

    タイトルとURLをコピーしました