JavaからMySQLに接続する方法を解説します。
- JavaからMySQLへ接続したい
- SELECT文で条件を指定して実行するには?
このような内容について解説します。
私はWEB開発中心に、フロントエンド、サーバーサイド、サーバー構築など経験豊富なエンジニアです。
これからプログラミングを始める方に向けて、少しでも分かりやすく解説していきたいと思います。
WEBシステム開発において、MySQLやPostgreSQLなどへのデータベース接続はほぼ必須なので、これを機に覚えましょう。
それでは行きましょう!
目次
MySQL Connectorをインストール(Maven)
JavaからMySQLへ接続するには、
「MySQL Connector」というMySQL用のJDBCドライバが必要になります。
今回は、MavenでJDBCドライバをインストールする手順を紹介しますので、Mavenプロジェクトが前提で解説します。
Mavenプロジェクトを作成するには、
Eclipseの「パッケージ・エクスプローラー」の空白部分を右クリックして「新規 > Mavenプロジェクト」から作成してください。
Maven Repositoryでテキストをコピー
Mavenプロジェクトのpom.xmlに記載するためのテキストをコピーします。
まず、Maven Repositoryサイトの「MySQL Connector」ページにアクセス。
https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.23
次の画面が開きましたら、Mavenタブ内のテキストをコピーしておきます。

pom.xmlへ追記する
Mavenプロジェクト直下にある「pom.xml」を開いて、先ほどMaven Repositoryからコピーしたテキストを、次のイメージのように貼り付けます。
※<dependencies></dependencies>で囲んであげる必要がありますので注意ください。

このpom.xmlファイルを保存すると、「MySQL Connector」のjarファイルがUsersの「.m2」フォルダに自動的にダウンロードされて使用できようになります。

サンプルデータを用意する
今回は、MySQLにサンプルデータ「users」テーブルを用意しました。
データは「山田太郎、山田花子」の2レコード入っています。
(イメージはphpMyAdminです)

こちらのテーブルにJavaからMySQLへ接続したいと思います。
JavaからMySQL接続
MySQLに接続するソースコードを書いてみます。
package sample_maven; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Sample { public static void main(String[] args) { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { // データベース接続 conn = DriverManager.getConnection( // ホスト名、データベース名 "jdbc:mysql://localhost:3306/testdb", // ユーザー名 "root", // パスワード ""); // SQL文をセット stmt = conn.prepareStatement("SELECT * FROM users"); // SQL文を実行 rs = stmt.executeQuery(); // ループして1レコードずつ取得 while (rs.next()) { String id = rs.getString("id"); String name = rs.getString("name"); String address = rs.getString("address"); String tel = rs.getString("tel"); System.out.println(id + "、" + name + "、" + address + "、" + tel); } } catch (SQLException e) { System.out.println("データベース接続エラー。"); } finally { try { if (conn != null) { conn.close(); } } catch (SQLException e) { System.out.println("データベース接続エラー。"); } } } }
実行結果:

テーブルにあった2レコードを表示することができました。
1レコードにある各列の値を「rs.getString()」で列名を指定して取得しています。
もし、数値の場合は「rs.getInt()」を使用するなど、上手く型を合わせてあげてください。
あと、SQL実行するには「try ~ catch ~ finally」で囲んであげる必要がありますが、これは決まり文句ですね。
条件指定してSQL実行
SQL文に条件指定するには、PreparedStatementに値を渡して使用します。
「JavaからMySQL接続」で説明したソースコードに条件指定を追加。
「setString()」関数を使用して、1つ目の「?」に対して値「山田太郎」を条件指定しています。(引数1が1つ目の「?」ってことです。)
また、数値の場合は「setInt()」で指定するなど、getと同様に型に合わせて関数を使い分けてください。
conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/testdb", "root", ""); // 条件指定したSQL文をセット stmt = conn.prepareStatement("SELECT * FROM users WHERE name = ?"); // 1つ目の「?」に対して値「山田太郎」をセット stmt.setString(1, "山田太郎"); rs = stmt.executeQuery(); while (rs.next()) { String id = rs.getString("id"); String name = rs.getString("name"); String address = rs.getString("address"); String tel = rs.getString("tel"); System.out.println(id + "、" + name + "、" + address + "、" + tel); }
実行結果:

「name=山田太郎」のレコードを取得することができました。
まとめ
JavaからMySQLに接続する方法を解説しました。
- MySQL Connectorをインストール(Mavenのpom.xmlでインストール)
- JavaからMySQL接続(ソースコードの書き方)
- 条件指定してSQL実行(setString関数を使用する)
今回は「MySQL Connector」を使ってMySQL接続しましたが、
実践でのデータベース接続は Springなどのフレームワークのルールに従って接続します。
ですが、MySQLデータベース接続に必要な「ホスト名、データベース名、ユーザー名、パスワード」の指定の仕方・考え方は同じですので、
この記事の内容を知って損はないでしょう。
Springフレームワークを使ってDB接続したい方は次の本に分かりやすく書いてありますので、学習してみるのも良いと思います。
この本はPostgreSQLで書かれていますが、接続情報を「jdbc:postgresql → jdbc:mysql」に変えるだけでMySQLへ接続できます。
それでは!