JavaでMySQLに接続する方法|Connector/J導入と使い方
CONTENTS
JavaでWebアプリや業務システムを開発する際、データベース接続は避けて通れません。とくにMySQLは導入しやすく、学習環境から実務まで幅広く使われています。
しかし、初学者がつまずきやすいのが「JDBCドライバとは何か」「Connector/Jをどう追加するのか」「接続エラーが出たら何を確認すべきか」という点です。そのため、本記事ではMySQL Connector/Jの役割から導入方法、接続コード、代表的なエラー対処までを順番に整理して解説します。
なお、Javaそのものの基礎を先に整理したい方は、エンジニアを目指す人必見!Javaとは?わかりやすく特徴と用途を解説もあわせて確認すると理解しやすくなります。また、SQLの基本から見直したい場合は、【初心者向け】SQLとは?基礎・種類・CRUD・使い方まで徹底解説もおすすめです。
MySQL Connector/Jとは
まず、JavaからMySQLに接続するにはJDBCドライバが必要です。MySQL専用のJDBCドライバが、MySQL Connector/Jです。
これは、JavaアプリケーションとMySQLの間で通信を行うための部品です。たとえば、Java側で発行したSQLをMySQLに渡したり、取得したデータをJavaで扱いやすい形に変換したりします。
さらに、Connector/Jを導入すると、PreparedStatementを使った安全なSQL実行や、トランザクション制御、ResultSetによる検索結果の取得も行いやすくなります。単に「接続するためのファイル」というだけでなく、実務で必要なJDBC操作の土台になるライブラリと考えると分かりやすいです。
- JDBC準拠の接続機能
- JavaとMySQL間のデータ変換
- PreparedStatement対応
- トランザクション制御のサポート
JavaからMySQLに接続する前に確認したいこと
次に、実際に接続コードを書く前に、最低限確認しておきたいポイントがあります。ここを曖昧にしたまま進めると、接続以前の段階でエラーになりやすいです。
MySQLが起動しているか
まず確認したいのは、MySQLサーバー自体が起動しているかどうかです。Connector/Jを正しく追加していても、接続先のDBが停止していれば通信できません。
接続先のURL・ポート番号
一方で、接続URLの指定ミスも非常によくあります。とくに、localhost、ポート番号3306、データベース名の誤りは初歩的ですが発生しやすいポイントです。
ユーザー名とパスワード
また、MySQL側のユーザーに接続権限があるかも重要です。アプリケーション用ユーザーを作っている場合は、対象DBへの権限が付与されているかも確認しましょう。
導入手順
手動でJARを追加する方法
まず、学習用の小さなプロジェクトでは、JARファイルを直接追加する方法が分かりやすいです。IDE上でライブラリ追加の流れを理解しやすいため、JDBCの仕組みを学ぶ初期段階にも向いています。
- 公式サイトからConnector/Jをダウンロードする
- ZIPを解凍してJARファイルを取り出す
- プロジェクトのビルドパスまたはクラスパスに追加する
ただし、ライブラリの更新管理は手作業になるため、実務ではビルドツールを使う方が一般的です。
Mavenの場合
そのため、実務ではMavenによる依存関係管理がよく使われます。pom.xmlに依存関係を書いておけば、環境差分を減らしやすくなります。
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.4.0</version>
</dependency>
Gradleの場合
一方で、Gradleを使っているプロジェクトでは、依存関係を以下のように記述します。Spring Boot系の案件でも見かける構成です。
dependencies {
implementation 'com.mysql:mysql-connector-j:8.4.0'
}
接続コード例
ここからは、実際にJavaからMySQLへ接続するコードを確認します。今回は、接続・SQL実行・結果取得までを最小構成でまとめています。
また、try-with-resourcesを使うことで、ConnectionやPreparedStatement、ResultSetのクローズ忘れを防げます。実務でも基本となる書き方なので、早い段階で慣れておくのがおすすめです。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MySQLConnectionSample {
public static void main(String[] args) {
String url = """"jdbc:mysql://localhost:3306/sampledb?useSSL=false&serverTimezone=Asia/Tokyo"""";
String user = """"sample_user"""";
String password = """"sample_password"""";
String sql = """"SELECT id, name FROM users WHERE id = ?"""";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setInt(1, 1);
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
int id = rs.getInt(""""id"""");
String name = rs.getString(""""name"""");
System.out.println(""""取得結果: """" + id + """" : """" + name);
} else {
System.out.println(""""該当するデータが見つかりませんでした。"""");
}
}
} catch (SQLException e) {
System.err.println(""""データベース接続エラーが発生しました。"""");
e.printStackTrace();
}
}
}
接続URLでよく使う要素
さらに、接続URLの意味も押さえておくとトラブル時に切り分けしやすくなります。今回のURLでは、localhostが接続先ホスト、3306がポート番号、sampledbがデータベース名です。
また、serverTimezone=Asia/Tokyoはタイムゾーン差異によるエラー回避で使われることがあります。環境によっては不要な場合もありますが、日時まわりで不整合が出るときの確認ポイントになります。
よくあるエラーと対処法
No suitable driver found
まず、このエラーはConnector/Jがクラスパスに入っていない場合に起きやすいです。JARを追加したつもりでも、実行構成に反映されていないことがあります。
そのため、IDEのビルドパス設定、Mavenの依存解決、Gradleの同期状態を見直しましょう。
Communications link failure
次に、このエラーはMySQLサーバーに接続できないときによく発生します。MySQLが起動しているか、ホスト名やポート番号が正しいか、ローカル環境以外ならネットワーク制限がないかを確認してください。
Access denied
一方で、認証情報の誤りや権限不足が原因の場合はこのエラーになります。ユーザー名とパスワードだけでなく、対象データベースに対する権限設定も確認が必要です。
タイムゾーン関連のエラー
さらに、日時を扱う環境ではタイムゾーン設定に起因するエラーが出ることがあります。その場合は、接続URLにserverTimezoneを設定して改善するかを試すと切り分けしやすいです。
実務で意識したいポイント
ここまでの内容で接続自体はできますが、実務では「つながること」だけで満足しない視点も大切です。たとえば、SQL文字列を直接連結すると、保守性や安全性に課題が出やすくなります。
そのため、値の埋め込みにはPreparedStatementを使い、接続情報はソースコードに直書きしない運用を意識しましょう。設定ファイルや環境変数に分離すると、環境ごとの差し替えも行いやすくなります。
また、学習が進んだら単純なJDBC接続だけでなく、Spring BootのDataSource設定やコネクションプールの考え方まで広げると、実務理解が深まります。Javaで成長したい方は、エンジニアがJavaで成長するためのステップアップ戦略もあわせて読むと次の学習方針を立てやすいです。
まとめ
JavaとMySQLを接続するには、MySQL Connector/Jの導入が必要です。まずはJDBCドライバの役割を理解し、MavenやGradleで依存関係を追加し、基本の接続コードを実行できる状態を目指しましょう。
しかし、実務では接続できた後も、例外処理、認証情報の管理、権限設定、エラー切り分けが重要になります。基礎段階でこの流れを押さえておくと、後からSpring Bootや業務システム開発に進んだときも理解しやすくなります。
そのため、まずはローカル環境で1本の接続コードを動かし、次にSELECT、INSERT、UPDATEへと段階的に広げていくのがおすすめです。
つまずいたら、現役エンジニアと一緒に解決しよう
この記事で扱った【Java / SQL】は、独学だと細部で詰まりやすい分野です。さらに理解を深めたい方は、ZeroCode PLUSで実務直結の学習を進めてみませんか。