[Java] JDBCドライバでMySQL接続するまでの手順

JavaでJDBCドライバを利用して、データベース接続をするまでの手順です。ここではJDBCドライバのインストール、jarファイルのセットアップまでの手順をまとめます。

なお、今回使用するデータベースはMySQLを使用しますが、1からサーバーを立てるのは大変なので、以前Laravel環境を構築したときに使用したdocker上のMySQLを使用します。これについては以下の記事を参照してください。

https://www.s-watanabe.work/2020/12/laravel-mysqldocker.html

1. 環境情報
OS Windows10
データベース MySQL
JDBCドライバ Connector/J 8.0.31
IDE IntelliJ

JDBCドライバのセットアップ

インストーラのダウンロード

以下のMySQL公式サイトのダウンロードページからConnector/Jという、JDBCドライバをダウンロードします。なお、現在単体でのダウンロードは見つからなく、MySQL Installerに含まれているようなので、MySQL Installerをダウンロードします。

https://dev.mysql.com/downloads/connector/j/

インストーラを実行

ダウンロードしたインストーラを実行し、Setup TypeにCustomを選択してNextをクリックします。

インストールするプロダクトを選択

インストールするプロダクトは最小構成にしたいので、Connector/Jのみを選択します。

ダウンロード対象のプロダクトを確認

Connector/Jが入っていればOKです。Executeをクリックするとダウンロードとインストールが開始されます。

セットアップ完了

Show Detailをクリックすると、セットアップのログが確認できます。ここにライブラリがインストールされたディレクトリが確認できるので控えておきます。

Next → Finishをクリックし、MySQL JDBCドライバのセットアップは完了です。

ライブラリ設定

次にインストールしたjarファイルを、クラスパスに登録します。開発エディタとしてIntelliJを例に記載していきます。

Project Structure(プロジェクト構造)

IntelliJのメニューから「ファイル」→「プロジェクト構造」を開きます。

プロジェクト設定の「ライブラリ」から、+ボタンを押して新規プロジェクトライブラリを開き「Java」を選択します。

ライブラリファイルの選択

JDBCドライバのインストールにより設置されたjarファイル(mysql-connector-j-8.0.31.jar)を選択します。

モジュールの選択

jarファイルの追加先モジュールを選択します。

クラスの追加

以下のようにクラスに追加されればOKです。適用してダイアログを閉じます。

DB接続

DriverManagerクラス

DriverManagerクラスのgetConnectionメソッドでConnectionオブジェクトを取得します。DriverManagerはクラスパス上にあるDBMSのベンダーから提供されたJDBCドライバを利用して、DB接続を行うクラスです。

2. getConnectionメソッドの引数
第一引数

JDBCドライバを示すURL

書式)
jdbc:{DBMS}://{HOST}:{PORT}/{DBNAME}

例)
jdbc:mysql://localhost:3306/test_db

第二引数 DB接続アカウント
第三引数 DB接続パスワード

Connectionインターフェース

ConnectionインターフェースはDB接続を管理するためのインターフェースです。DriverManagerで生成されるConnectionインターフェース型のオブジェクトは、このインターフェースを実装したベンダーが提供するクラスとなっています。

DB接続コード例1

コード

以下の例は、データベースへ接続し、Connectionインターフェース型のオブジェクトのクラス名と、現在の接続状態を表示しています。

String url = "jdbc:mysql://localhost/test";
String user = "user";
String password = "password";

Connection conn = null;
try {
    conn = DriverManager.getConnection(url, user, password);
    System.out.println(conn.getClass().getName());
    System.out.println("Connection:" + !conn.isClosed());
} catch(SQLException e) {
    System.out.println(e.getMessage());
} finally {
    if (conn != null) {
        conn.close();
    }
}

実行結果

実行結果を確認するとMySQLに対応したJDBCのConnection型のオブジェクトでConnectionが生成されていることが分かります。

com.mysql.cj.jdbc.ConnectionImpl
Connection:true

DB接続コード例2

Java SE7以前のバージョンでは、上記「DB接続コード1」のように、finallyブロックでConnectionのクローズ処理を記述して、接続が残ってしまわないよう確実にクローズするのが一般的でした。

しかし、Java SE8で導入されたtry-with-resourcesを利用することで、この処理は簡潔に記述することが可能であり、なおかつ可読性が高くなりました。上記のコード例1は、以下のように置き換えることが出来ます。

コード

String url = "jdbc:mysql://localhost/test";
String user = "user";
String password = "password";

try (Connection conn = DriverManager.getConnection(url, user, password);) {
    System.out.println(conn.getClass().getName());
    System.out.println("Connection:" + !conn.isClosed());
} catch(SQLException e) {
    System.out.println(e.getMessage());
}

実行結果

実行結果は上記と同じです。

コメント

このブログの人気の投稿

docker-compose up で proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host

docker-compose で起動したweb、MySQLに接続できない事象

【PHP】PHP_CodeSnifferを使う(コーディングルールのカスタマイズ)