[Java] JDBCドライバでMySQL接続するまでの手順
JavaでJDBCドライバを利用して、データベース接続をするまでの手順です。ここではJDBCドライバのインストール、jarファイルのセットアップまでの手順をまとめます。
なお、今回使用するデータベースはMySQLを使用しますが、1からサーバーを立てるのは大変なので、以前Laravel環境を構築したときに使用したdocker上のMySQLを使用します。これについては以下の記事を参照してください。
https://www.s-watanabe.work/2020/12/laravel-mysqldocker.html
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接続を行うクラスです。
第一引数 |
JDBCドライバを示すURL 書式) 例) |
---|---|
第二引数 | 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());
}
実行結果
実行結果は上記と同じです。
コメント
コメントを投稿