【Java】EclipseでJDBCを使う方法|環境構築からサンプルコード・接続エラー対処まで

データベースの作り方_アイキャッチ画像 Java

「JDBCってそもそも何?」

「データベースにも種類があるの?オススメは?」

「JDBCを使いたいけど、Eclipseでの具体的なやり方が分からない」

こういった疑問に答えます。

本記事の内容

  • JDBCとは?
  • オススメデータベース5選
  • EclipseでJDBCを使う環境構築の手順
  • JDBCドライバの設定方法
  • 実際に動くサンプルコード
  • Eclipse DTPを使ったGUIでのDB操作
  • 接続テストとよくあるエラーの対処法

この記事を書いている私は、大学生の時にプログラミングを始め、現在、プログラミング経験が5年ほどです。現在は、某大手IT企業でシステムエンジニアとして働いています。

JDBCとは?

JDBCとは、Java DataBase Connectivityの略称で、Javaアプリケーションからデータベースを操作するためのAPIのことです。

要するに、Javaでデータベースを使ったシステムを開発したいときに使う仕組みです。JDBCには大きく3つの要素が登場します。

  • JDBCドライバ:Javaとデータベースをつなぐための「翻訳機」のようなもの。MySQL用、PostgreSQL用など、データベースの種類ごとに専用のドライバが必要です。
  • DriverManager:JDBCドライバを管理し、データベースへの接続(Connection)を取得するためのクラス。
  • Connection / Statement / ResultSet:実際に接続を保持し、SQLを実行し、結果を受け取るためのオブジェクト。

この後の章で、実際にEclipse上でこれらを使ったコードを書いていきます。

オススメデータベース5選

データベースにも様々な種類があります。その中から、オススメのデータベースをいくつかご紹介します。

  • ①:Oracle Database
  • ②:MySQL
  • ③:PostgreSQL
  • ④:SQLite
  • ⑤:FileMaker

まずは特徴を一覧で比較してみましょう。

データベース ライセンス・料金 オープンソースか 主な特徴 こんな人におすすめ
Oracle Database 個人利用も含め高額なライセンス料が必要 いいえ 堅牢性・移植性が高く大規模システム向け 大企業の基幹システムを学びたい人
MySQL 非商用利用は無料(GPLライセンス) はい 世界的に利用実績が多く学習情報も豊富 Web系システム開発を学びたい初心者
PostgreSQL 商用・非商用問わず無料 はい 関数・機能が豊富で拡張性が高い 複雑なクエリや高度な分析をしたい人
SQLite 無料(パブリックドメイン) はい サーバ不要でアプリに組み込み可能、軽量 小規模なアプリ・組み込み用途
FileMaker 商用ソフトウェア(有償ライセンス) いいえ グラフ作成などGUI機能が充実 分析レポート作成やiOS連携をしたい人

Oracle Database

Oracle社が開発しているデータベースです。特徴として、堅牢性が高く、不測の事態にデータを保護してくれます。また、移植性も高く、他のプラットフォームへの移行が比較的容易です。しかし、Oracle Databaseは高機能である一方、ライセンス料が高額なため、個人での利用は厳しいかもしれません。

MySQL

MySQLは世界中で最も利用されているオープンソース(ソースコードが一般公開されている)のデータベースの1つです。多くのレンタルサーバで利用されているため、市場でのシェアが高いデータベースです。また、非商用目的であれば、無料で利用することができます。本記事では、このMySQLを使ってEclipse上でJDBCを動かす手順を解説します。

PostgreSQL

読み方は「ポストグレスキューエル」です。MySQLとは異なり、商用目的であっても完全に無料で利用することができます。また、MySQLと比べて、関数や機能が豊富なことも特徴として挙げられます。

SQLite

名前の通り、軽量なデータベースで、起動や動作が軽快なことが特徴です。オープンソースのデータベースであり、無料で利用することができます。これまで紹介してきたRDBMSは、自身で動作するサーバ型ソフトウェアであるのに対し、SQLiteは、アプリケーションに組み込むことで動作するという特徴を持っています。

FileMaker

Windows、MacOSのどちらでも動作するデータベースです。グラフ作成機能に特化しており、分析資料の作成などに適しています。また、元々MacOS用のデータベースであったため、iPadやiPhoneとの親和性も高いです。

JDBCを使う前の準備(環境構築)

EclipseでJDBCを使うには、まず以下の環境が必要です。

JDK(Java Development Kit)のインストール確認

JDBCを利用するJavaプログラムを実行するには、JDKが必要です。ターミナル(コマンドプロンプト)で以下のコマンドを実行し、バージョンが表示されればインストール済みです。

java -version
javac -version

表示されない場合は、EclipseのダウンロードページやJDKの配布元(Eclipse Temurinなど)からJDKをインストールし、環境変数PATHの設定を行ってください。

Eclipseのインストールとプロジェクト作成

Eclipseをインストールしたら、起動後に「File」→「New」→「Java Project」を選択し、新規のJavaプロジェクトを作成します。この後の章で、このプロジェクトに対してJDBCドライバを設定していきます。

データベース(MySQL)の構築方法

今回はMySQLデータベースを作成します。また、Eclipse(Javaの統合開発環境)上での動作方法も解説していきます。

MySQLのダウンロード

Step1:MySQLのWebサイトからインストールファイルをダウンロード

[MySQL :: Download MySQL Community Server](https://dev.mysql.com/downloads/mysql/) のページに遷移し、自分のOSを選んで、インストールファイルをダウンロードします。

MySQLダウンロード画面

MySQLのアカウント作成を勧められますが、作らなくても問題ないので、「No thanks, just start my download」をクリックしてダウンロードを続けましょう。

MySQLダウンロード続行画面

MySQLのインストールと初期設定

ダウンロードしたインストーラを実行し、画面の指示に従ってインストールを進めます。途中でrootユーザーのパスワードを設定する画面が出てくるので、忘れないようにメモしておきましょう(この後、JDBCで接続する際に使用します)。

サンプル用データベース・テーブルの作成

インストール後、MySQL Workbenchやコマンドラインから以下のSQLを実行し、動作確認用のテーブルを作成しておきます。

CREATE DATABASE sampledb;
USE sampledb;

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50),
  email VARCHAR(100)
);

INSERT INTO users (name, email) VALUES ('Taro Yamada', 'taro@example.com');

EclipseにJDBCドライバを設定する方法

MySQLをインストールしただけでは、EclipseのJavaプログラムからは接続できません。JavaとMySQLをつなぐ「JDBCドライバ」をEclipseのプロジェクトに追加する必要があります。

MySQL Connector/J(JDBCドライバ)のダウンロード

MySQL公式サイトのダウンロードページから「Connector/J」(MySQL用のJDBCドライバ)を選択し、お使いのOSに合ったファイルをダウンロードします。ダウンロードしたファイルを展開すると、「mysql-connector-j-x.x.x.jar」のようなjarファイルが入っています。このjarファイルがJDBCドライバの本体です。

Eclipseのビルドパスへドライバを追加する手順

  1. Eclipseでプロジェクトを右クリックし、「Build Path」→「Configure Build Path」を選択
  2. 「Libraries」タブを開く
  3. 「Add External JARs…」をクリックし、先ほど入手したjarファイルを選択
  4. 「Apply and Close」で設定を保存

これでプロジェクトからJDBCドライバのクラス(例:com.mysql.cj.jdbc.Driver)を利用できるようになります。Eclipseを使ったJDBCプログラミングの具体的な設定例は、[Eclipse を用いた JDBC プログラミング|金子邦彦研究室](https://www.kkaneko.jp/pro/jdbc/javadb.html) でも詳しく解説されています。

JDBCの基本的な使い方(サンプルコード付き)

ドライバの設定が終わったら、実際にJavaプログラムからデータベースに接続してみましょう。

データベースへ接続する(DriverManager.getConnection)

データベースへの接続には、接続先のURL・ユーザー名・パスワードが必要です。

String url = "jdbc:mysql://localhost:3306/sampledb?useSSL=false&serverTimezone=UTC";
String user = "root";
String password = "your_password";

Connection conn = DriverManager.getConnection(url, user, password);

SQLの実行とResultSetの取得(Statement・PreparedStatement)

SQLを実行する際は、SQLインジェクション対策の観点からPreparedStatementを使うのが基本です。実行結果はResultSetとして受け取ります。

取得したデータをJavaの変数に格納する方法

以下は、データベースに接続し、usersテーブルから1件のデータを取得してJavaの変数に格納するサンプルコードです。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JdbcSample {
    private static final String URL = "jdbc:mysql://localhost:3306/sampledb?useSSL=false&serverTimezone=UTC";
    private static final String USER = "root";
    private static final String PASSWORD = "your_password";

    public static void main(String[] args) {
        String sql = "SELECT id, name, email FROM users WHERE id = ?";

        try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
             PreparedStatement pstmt = conn.prepareStatement(sql)) {

            pstmt.setInt(1, 1);

            try (ResultSet rs = pstmt.executeQuery()) {
                while (rs.next()) {
                    int id = rs.getInt("id");
                    String name = rs.getString("name");
                    String email = rs.getString("email");
                    System.out.println(id + " : " + name + " (" + email + ")");
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

rs.getInt("id")やrs.getString("name")のように、カラム名を指定してデータをJavaの変数に取り出しているのがポイントです。

リソースのクローズ処理(try-with-resources)

上記のコードでは、try (...)という構文(try-with-resources)を使っています。この構文を使うと、ConnectionやResultSetなどのリソースが処理終了後に自動でクローズされるため、クローズ漏れによるメモリリークや接続エラーを防ぐことができます。

Eclipse DTP(Data Tools Platform)でGUI操作する方法

Eclipseには、コードを書かずにGUI上でデータベースに接続・操作できる「DTP(Data Tools Platform)」という機能があります。JDBC関連のEclipseプラグインは、[Eclipse Marketplace](https://marketplace.eclipse.org/free-tagging/jdbc) から探すこともできます。

Data Source Explorerでの接続設定

  1. Eclipseメニューの「Window」→「Show View」→「Other」→「Data Management」→「Data Source Explorer」を開く
  2. 「Database Connections」を右クリックし、「New」を選択
  3. 接続タイプとして「MySQL」を選び、「New Driver Definition」で先ほど入手したjarファイルを指定
  4. データベース名、ユーザー名、パスワードを入力

SQL Scrapbook/Query Builderでのクエリ実行

接続設定が完了すると、SQL Scrapbookを使ってSQLエディタから直接クエリを実行し、結果をGUI上で確認できます。コードを書かずにテーブルの中身を確認したいときに便利な機能です。DTPを使った接続・クエリ実行のより詳しい手順は、[Setting Up and Executing JDBC Activities with Eclipse Using DTP](https://docs.tibco.com/pub/activematrix_businessworks/6.6.1/doc/html/GUID-7EF384BB-3849-4C55-AD42-11F32DFE99B0.html) でも解説されています。

接続テストとよくあるエラーの対処法

Test Connectionでの接続確認方法

Data Source Explorerで接続プロファイルを作成する際、設定画面には「Test Connection」というボタンがあります。これをクリックすると、入力した接続情報(URL・ユーザー名・パスワード)が正しいかどうかをその場で確認できます。「Ping succeeded」のようなメッセージが表示されれば接続成功です。

よくある接続エラーとその対処法

エラー内容 主な原因 対処法
ClassNotFoundException / NoClassDefFoundError JDBCドライバのjarがビルドパスに追加されていない 「Configure Build Path」でjarファイルを再確認・追加する
Access denied for user ユーザー名またはパスワードが誤っている MySQLインストール時に設定したパスワードを再確認する
Unknown database 接続URLに指定したデータベース名が存在しない CREATE DATABASE文でデータベースを作成しておく
Communications link failure MySQLサーバーが起動していない、またはポート番号が誤っている MySQLサービスを起動し、ポート番号(通常3306)を確認する

まとめ

本記事では、JDBCの基本概念から、オススメのデータベース、そしてEclipseでJDBCを使うための環境構築・ドライバ設定・サンプルコード・DTPを使ったGUI操作・接続エラーの対処法までを解説しました。

JDBCは最初はとっつきにくく感じますが、「ドライバを追加する」「Connectionを取得する」「SQLを実行してResultSetを受け取る」という3ステップの流れを押さえれば、どのデータベースでも同じ考え方で接続できるようになります。まずは本記事のサンプルコードをそのまま動かしてみて、徐々に自分のアプリケーションに組み込んでいきましょう。

参考にしたサイト

  • [MySQL :: Download MySQL Community Server](https://dev.mysql.com/downloads/mysql/)
  • [Eclipse を用いた JDBC プログラミング|金子邦彦研究室](https://www.kkaneko.jp/pro/jdbc/javadb.html)
  • [JDBC | Eclipse Plugins, Bundles and Products – Eclipse Marketplace | Eclipse Foundation](https://marketplace.eclipse.org/free-tagging/jdbc)
  • [Setting Up and Executing JDBC Activities with Eclipse Using DTP](https://docs.tibco.com/pub/activematrix_businessworks/6.6.1/doc/html/GUID-7EF384BB-3849-4C55-AD42-11F32DFE99B0.html)

コメント

タイトルとURLをコピーしました