Eclipseを使ってJavaからMySQLへ接続する


JavaでMySQLを操作する方法について解説していきます。
今回はWindows環境にXAMPPをインストールしてMySQLを使用します。

事前準備

・JDKのインストール
・Eclipseのインストール
・XAMPPのインストール
・JDBCドライバの準備

Eclipseの準備

1.Javaプロジェクトを作成

左上の「ファイル(F)」>「新規(N)」>「Javaプロジェクト」 で今回使う新規プロジェクトを作成します。

プロジェクト名はわかりやすく「MysqlTest」とでもしておきましょう。「完了(F)」をクリックして作成します。

2.プロジェクトにJDBCドライバを組み込む

プロジェクトが作成できたらプロジェクト上で右クリックをし、 「ビルド・パス(B)」>「外部アーカイブの追加(V)…」を選択してJDBCドライバ(mysql-connector-java-8.0.19.jar)を開きます。


プロジェクト直下の「参照ライブラリ」にmysql-connector-java-8.0.19.jarが追加してあれば大丈夫です。

MySQLの準備

XAMPPを起動し、MySQLを「Start」させます。

Startできたら右にある「Shell」をクリックして起動させます。
起動出来たら以下のコマンドを入力し、rootユーザーでMySQLに接続します。パスワード等の設定はこちらの記事を参考にしてください。

mysql -u root -p

接続ができたら、以下のコマンドでデータベースを作成します。今回は「test_db」という名前のデータベースを作成します。

CREATE DATABASE test_db;

無事に作成できたら、以下のコマンドで今作ったデータベースに接続します。

USE test_db;

ここまでの流れは以下の画像のとおりです。

次にテーブルを作成し、データを格納していきます。今回は「test」というテーブルを作成します。以下のコマンドを入力してください。※コンマを忘れないように!もし、入力ミスをした場合は「\c」で中断して新しく入力し直してください。

CREATE TABLE test(
    id VARCHAR(3),
    name VARCHAR(10)
);

テーブルが作成できたらデータを格納していきます。今回はデータを3行格納してみましょう。

INSERT INTO test VALUES('001', 'みかん');
INSERT INTO test VALUES('002', 'りんご');
INSERT INTO test VALUES('003', 'ぶどう');

ここまでの流れは以下の画像のようになります。

きちんとデータが格納されたかどうか以下のコマンドで確認してみましょう。

SELECT * FROM test;


これでMySQLの準備は完了です。

JavaからMySQLに接続

さて、以上で準備は整いました。ここからはJavaプログラムを作成して、先ほど作成したデータベースにアクセスし、テーブルのデータを表示させてみましょう。

まず、最初に作った「MysqlTest」プロジェクトの中にある「src」を右クリックし、「新規(W)」>「パッケージ」で「java_mysql」というパッケージを作成します。

次に、今作ったパッケージを右クリックし、「新規(W)」> 「ファイル」「Test.java」というファイルを作成します。


ここまで出来たら「Test.java」の中身を書いていきます。 コードの意味はコメントで書いておきました。

Test.java
package java_mysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test {

    public static void main(String[] args) {

    // 変数の準備
        Connection con = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;

    // SQL文の作成
        String sql = "SELECT * FROM test";

        try {
            // JDBCドライバのロード
            Class.forName("com.mysql.cj.jdbc.Driver");
            // データベース接続
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_db?serverTimezone=JST", "root", "root");
            // SQL実行準備
            stmt = con.prepareStatement(sql);
            // 実行結果取得
            rs = stmt.executeQuery();

      // データがなくなるまで(rs.next()がfalseになるまで)繰り返す
            while (rs.next()) {
                String id = rs.getString("id");
                String name = rs.getString("name");

                System.out.println(id + ":" + name);
            }
        } catch (ClassNotFoundException e) {
            System.out.println("JDBCドライバのロードでエラーが発生しました");
        } catch (SQLException e) {
            System.out.println("データベースへのアクセスでエラーが発生しました。");
        } finally {
            try {
                if (con != null) {
                    con.close();
                }
            } catch (SQLException e) {
                System.out.println("データベースへのアクセスでエラーが発生しました。");
            }
        }
    }

}

コードが書き終わったら保存をし、「Test.java」を右クリックして「実行(R)」>「Javaアプリケーション」から実行します。


コンソールで以下のように表示されていれば成功です。