Eclipse を用いた JDBC プログラミング

このページでは,Eclipse を使って,Java 言語の JDBC プログラムを作る手順を, 見本となるプログラムと説明する. JDBC は,Java 言語でリレーショナルデータベースを操作するための手段として使う.

Java プログラムの主要部分を抜き出すと,次のようになる. Java プログラムの中に SQL プログラムが埋めこまれます.SQL の結果(結果は,複数のレコードになる)が, ループで,Java の変数に格納されていきます.

            ResultSet rs = execute( "select * from commodity" );;
            DecimalFormat dformat = new DecimalFormat ("#,###円");
            while(rs.next()){
                int t = rs.getInt("type");
                    String n = rs.getString("name");
                    int p = rs.getInt("price");
                    System.out.println(t + " " + n + " " + dformat.format( p ) );

* ここに書いたように,SQL プログラムの結果を Java で扱うために,ちょっとしたプログラムを組む必要がある. このとき,JDBC だけを使うよりも,JDBC と SpringJDBC を組み合わせる方が,簡単に正しく動くプログラムを書けるかも知れません.

ここに書いたプログラムは,PostgreSQLで 動く.ごく簡単な設定の変更でMySQLJava DBや他のリレーショナルデータベースソフトウェアでも動く.

前準備

Java 25(Temurin 25 JDK) のインストール

Eclipse Temurin(Adoptium)のインストールを行い、Javaのプログラムをコンパイル・実行する環境を整える。扱う環境は、Windows搭載パソコンである。現時点(2026年6月)での最新LTS版である Java 25(Temurin 25 JDK)を推奨する。

[Windows での Java 25(Temurin 25 JDK) のインストール手順を見るには、ここをクリック]

Windows での Java 25(Temurin 25 JDK) のインストール

以下のいずれかの方法で Java 25(Temurin 25 JDK)をインストールする。JDKがインストール済みの場合、この手順は不要である。

方法 1:winget によるインストール

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして、コマンド全体をコマンドプロンプトにコピー&ペーストする。

Temurin の Windows インストーラー(.msi)は、ユーザー単位ではなくマシン単位でインストールされる(1台に1つのインストール)。そのため、システム全体(全ユーザー向け)にインストールするには管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動するとPATHが反映される。

REM Java 25(Temurin 25 JDK) をインストール(PATH と JAVA_HOME を更新)
winget install --id EclipseAdoptium.Temurin.25.JDK -e --silent --accept-source-agreements --accept-package-agreements --override "ADDLOCAL=FeatureMain,FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome INSTALLDIR=\"C:\Program Files\Eclipse Adoptium\jdk-25\" /quiet"

上記の --override 内の指定の意味は次のとおりである。FeatureEnvironment はPATH環境変数の更新、FeatureJavaHomeJAVA_HOME 環境変数の更新、FeatureJarFileRunWith は .jar ファイルとJavaアプリケーションの関連付けである。INSTALLDIR はインストール先フォルダの指定である。

方法 2:インストーラーによるインストール

  1. Adoptium公式サイト(https://adoptium.net/temurin/releases/)にアクセスし、Version として「25 - LTS」、Operating System として「Windows」を選び、.msi 形式のWindows用インストーラーをダウンロードする。
  2. ダウンロードした .msi ファイルを実行し、インストールプログラムを起動する。
  3. ライセンス条項を確認し、同意できる場合はチェックを入れて次へ進む。
  4. 「Installation Scope」画面では「Install for all users of this machine」を選ぶ
  5. 「Custom Setup(カスタムセットアップ)」画面で、インストールする機能を選択する。既定では「Add to PATH(PATH環境変数への追加)」と「Associate .jar」(.jarファイルの関連付け)が有効になっている。さらに、ツリー内でバツ印(×)が付いている「Set JAVA_HOME variable(JAVA_HOME環境変数の更新)」をクリックして有効に変更することを推奨する。これらを有効にしないと、コマンドプロンプトから java コマンドを実行できなかったり、開発ツールがJDKを見つけられなかったりする。
  6. 「次へ (Next)」をクリックし、続いて「インストール (Install)」をクリックしてインストールを開始する。完了後「Finish」で閉じる。

インストールの確認

コマンドプロンプトで以下を実行する。

java --version

バージョン番号(例:openjdk 25.x.x)が表示されればインストール成功である。「'java' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していないか、PATHが反映されていない(コマンドプロンプトを再起動して再度確認する)。

あわせて、コンパイラと JAVA_HOME も確認しておくとよい。

javac --version
echo %JAVA_HOME%

Eclipse のインストール

Eclipse をインストールする。扱う環境は、Windows搭載パソコンである。

[Windows での Eclipse のインストール手順を見るには、ここをクリック]

Windows での Eclipse のインストール

以下のいずれかの方法で Java 25(Temurin 25 JDK)をインストールする。JDKがインストール済みの場合、この手順は不要である。

方法 1:winget によるインストール

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして,コマンド全体をコマンドプロンプトにコピー&ペーストする。

REM Temurin 25 JDK をインストール
winget install --id EclipseAdoptium.Temurin.25.JDK -e --accept-source-agreements --accept-package-agreements

winget が使えない場合や,インストール先・パッケージ種類を画面で選びながら導入したい場合は,次の方法を用いる。

方法 2:インストーラーによるインストール

公式サイトからダウンロードしてインストールできる。詳しくはhttps://www.kkaneko.jp/tools/win/eclipse.htmlで説明している。

Eclipse の初期設定、使用方法の基本

詳しくはhttps://www.kkaneko.jp/tools/win/eclipse.htmlで説明している。

リレーショナル・データベース管理システムのインストール

インストールしていないときは,下記の Web ページを参考に,インストールを済ませておくこと.

あらかじめ決めておく事項と設定内容

設定内容について.この Web ページに掲載するプログラムは,下記の設定である. 設定が違う場合には,プログラムを書き換える(書き換えは難しくは無い).

テスト用データベースの作成

テスト用データベースとして,下記の SQL コマンドで,テーブル commodity が作られ,データが入っていること.

create table commodity (
    id integer primary key not null,
    name varchar(32) not null,
    price integer );
insert into commodity values( 1, 'apple', 50 );
insert into commodity values( 2, 'orange', 20 );
insert into commodity values( 3, 'strawberry', 100 );
insert into commodity values( 4, 'watermelon', 150 );
insert into commodity values( 5, 'melon', 200 );
insert into commodity values( 6, 'banana', 100 );
select * from commodity;

Eclipse での JDBC プログラムの作成手順

以下,Eclipse を使う. プロジェクトの作成クラスの定義実行という一連の操作を,図解で説明する.

Eclipse の使用にあたって,事前に決めておく事項

Eclipse のプロジェクト等を作る. このページでは,プロジェクト名,パッケージ名,メインとなるクラス名は次のように記述します. (すでに同じ名前のプロジェクトがある,といったときは,プロジェクト名を変えてください).

プロジェクトの新規作成

下記の手順で,プロジェクトを新規に作成する.

  1. (もし,プロジェクト・エクスプローラが開いていなければ)プロジェクト・エクスプローラを開く

    「ウインドウ (Window)」→「ビューの表示 (Show View)」→「プロジェクト・エクスプローラ (Project Explorer)」 と操作する.

  2. プロジェクトの新規作成の開始

    ファイル」→「新規 (New)」→「プロジェクト (Project)
    または,プロジェクト・エクスプローラ内で,右クリック→「新規 (New)」→「プロジェクト (Project)」

  3. Java」の展開

    新規プロジェクトのウインドウが開くので, 「Java」を展開する.

  4. Java プロジェクト」の選択

    展開した「Java」の下にある 「Java プロジェクト」を選び,「次へ」をクリック.

  5. プロジェクト名の指定

    新規Javaプロジェクトのウインドウが開くので,プロジェクト名を付ける(1行目). プロジェクト名には好きにつけて良いが,全角文字は避ける.分かりやすい名前が良い.

  6. Java 設定

    Java 設定はデフォルトのままでよい.「終了」をクリック

  7. パースペクティブ

    もし,「関連付けられたパースペクティブを開きますか?」というウインドウが開いたら,パースペクティブを開きたいので,「はい」をクリック.

(Java DB (Derby) を使うときのみ) Apache Derby ネーチャーの追加と,サーバの開始

Java DB (Derby) を使うときに限り,プロジェクトへのApache Derby ネーチャーの追加 と,Java DB (Derby) サーバの開始を行う. これは, Java DB (Derby) を使うための追加的な設定です

  1. プロジェクト・エクスプローラで,プロジェクト名 HelloWorld右クリック
  2. 「Apache Derby」→「Apache Derby ネーチャーの追加」

    「Apache Derby」が候補として現れないときは, Java DB (Derby) インストール の手順に従って,インストールと設定を行う.

  3. 「Apache Derby」→「Derby ネットワーク・サーバの開始」

    ポート1527 で Derby サーバが起動します.

    「Derby ネットワーク・サーバの開始」が選べない状態になっているときは, すでに開始済みなので,この手順は不要.

リレーショナルデータベース・ソフトウェアとして,Java DB (Derby) 以外を使う場合は,上記は不要です.

プロジェクトへの外部 jar の追加 (JDBC)

JDBC を使いリレーショナルデータベース・ソフトウェアと接続できるようにするため,リレーショナルデータベース・ソフトウェアに付属の JDBC ファイルを,外部 jar として設定する必要がある. (JDBC ファイルは,使用するリレーショナルデータベース・ソフトウェアごとに違う,ということ).

  1. プロジェクト・エクスプローラで,プロジェクト名 HelloWorld右クリック
  2. プロパティー」→「Java コンパイラー」→「Java のビルド・パス」→「ライブラリー
  3. 外部 JAR の追加」をクリック
  4. JDBC の jar ファイルを追加
    • PostgreSQL の場合:

      C:\Program Files\psqlJDBC\postgresql-8.3-603.jdbc4.jar を追加する.

    • MySQL の場合:

      C:\Program Files\Java\mysql-connector-java-5.1.7\mysql-connector-java-5.1.7-bin.jar を追加する.

      JDBC の jar ファイルが無い,というときは,MySQL Connector Java のダウンロードの Web ページを見てください.

    • Java DB の場合:

      C:Program Files\eclipse3.5\eclipse\plugins\org.apache.derby.core_10.5.1\derby.jar を追加する.

  5. 外部 JAR の確認

    外部 JAR システムを確認したいときは,プロジェクト・エクスプローラで,「Java リリース; src」の下の,「ライブラリー」を展開する.

パッケージ作成

Eclipse のプロジェクト・エクスプローラを使って, パッケージを作成します. パッケージ名には hoge.hoge.com のようなドメイン名を付ける習慣があることに注意してください. このページでは,作成するパッケージ名は,hoge.hoge.com と書く. (パッケージ名を変えるときは,読み替えてください).

  1. (もし,プロジェクト・エクスプローラが開いていなければ)プロジェクト・エクスプローラを開く

    「ウインドウ」→「ビューの表示」→「プロジェクト・エクスプローラ」 と操作する.

    パッケージの作成,クラスの作成などの作業は,プロジェクト・エクスプローラで行う.

  2. パッケージを新規作成すべきプロジェクトの選択

    プロジェクト・エクスプローラに,プロジェクト一覧が表示されているはずです. パッケージを新規作成したいプロジェクト名 HelloWorld右クリックして, 「新規」→「パッケージ」と操作する.

  3. パッケージ名の設定

    名前のところに,パッケージ名 hoge.hoge.com を設定し,「終了」をクリックする.

  4. パッケージの確認

    プロジェクト・エクスプローラにおいて, パッケージ hoge.hoge.com が増えていることを確認する.

クラス定義

クラス定義の手順は次の通りです. 前準備として,パッケージ hoge.hoge.com を作成済みであること.

  1. クラス定義の開始

    プロジェクト・エクスプローラにおいて, クラスを定義したいパッケージ名 hoge.hoge.com右クリック.その後, 「新規」→「クラス」と操作する.

    *新規」を選んだとき,「クラス」が現れないことがあります. そのときは, 「新規」→「その他」→「Java」→「クラス」と操作する.

    プロジェクト・エクスプローラで, パッケージ名 hoge.hoge.comが表示されていないときは, プロジェクト名の下の 「Java リソース; src」または「src」の下を展開して下さい.

  2. 定義すべきクラス名等の指定

    Java パッケージ名,クラス名を入力できるウインドウが開くので,設定を行う.

    1. 「パッケージ (package)」(2行目の「パッケージのところ): パッケージ名 「hoge.hoge.com」を設定.(「hoge.hoge.com」になっていなければ修正すること).
    2. 「クラス名」(4行目の「名前」のところ): HelloWorld
    3. 「public static void main(String[] args)」: チェックする
  3. クラスファイル一覧の表示

    プロジェクト・エクスプローラで, パッケージ名 hoge.hoge.com の左横の「+」をクリックすると, クラスファイル一覧が表示されます.

  4. 定義したいクラスのファイルを開く

    HelloWorld クラスを定義したいので, プロジェクト・エクスプローラの パッケージ名 hoge.hoge.com の下にあるクラスファイル一覧の中から, 「HelloWorld.java」をダブルクリックします. すると,エディタが開きます.

    このように,Eclipse のプロジェクト・エクスプローラで,定義したいクラスの「クラス名.java」ダブルクリックすると,エディタが開くことになっています.

    なお,別のクラスを追加したいときは, パッケージ名を右クリックして「新規」→「クラス」です.

  5. エディタでクラス HelloWorld を定義する

    下記のクラス定義をカットアンドペーストしてみて下さい(テスト用に作ったクラス定義です). (パッケージ名を「hoge.hoge.com」と書いているので,パッケージ名を別の名前にしている場合には,適切に読み替えてください).

    【要点】

    • PostgreSQL 以外を使う場合には,プログラム中の「コメント」になっている部分を調整
    • フォーマット付き出力を行いたいので,DecimalFormat を使用.
    • データベース名,ユーザ名などが違うときは,プログラムを書き換え
    • localhost (ローカルのマシン)に接続するようなプログラムなので,リモートのマシンに接続したい場合にはプログラムを書き換え

    【プログラムの主要部分】

    プログラムの主要部分を抜き出すと,次のようになる.

                ResultSet rs = execute( "select * from commodity" );;
                DecimalFormat dformat = new DecimalFormat ("#,###円");
                while(rs.next()){
                    int t = rs.getInt("type");
                        String n = rs.getString("name");
                        int p = rs.getInt("price");
                        System.out.println(t + " " + n + " " + dformat.format( p ) );
    
    1. SQL の実行結果は,変数 rs に入る.
    2. rs に入っているデータは,たくさんのレコード(行)からなるデータ.これを,Java の変数(変数は,数値などの単純値とする)に入れたい.
    3. そこで,while(rs.next() での繰り返し処理を行う.これは,rs に入っているたくさんのレコード(行)を,1つずつ見ていく,という意味.
    4. 1個のレコード(行)は,複数の単純値の並びである.そこで,getInt("属性名"), getString("属性名") のように書いて,1個のレコード(行)の中から,望みの属性値を取り出す.
    ----------------------ここから---------------------
    package hoge.hoge.com;
    
    import java.sql.*;
    import java.text.DecimalFormat;
    import java.util.Properties;
    
    public class HelloWorld {
        // 決まり文句 (ドライバクラス)
        final private static String PostgresJDBCDriver = "org.postgresql.Driver";
        final private static String MySQLJDBCDriver = "org.gjt.mm.mysql.Driver";
        final private static String JavaDBJDBCDriver = "org.apache.derby.jdbc.EmbeddedDriver";
        final private static String HiRDBDriver = "JP.co.Hitachi.soft.HiRDB.JDBC.PrdbDriver";
    
        // 下記の変数を正しく設定する
        // DBNAME, DBDIR, USER, PASS, JDBCDriver, DBURL
    
    
            // PostgreSQL 用デフォルト
            // Eclipse で PostgreSQL を使いたいときは,次の手順で,WebContent\WEB-INF\lib にインポートしておく.
            //     WebContent\WEB-INF\lib を右クリック.「一般」→「ファイルシステム」
            //     その後インポートすべきファイルとして,次のファイルを指定
            //       C:\Program Files\psqlJDBC\postgresql-8.3-603.jdbc4.jar
            final private static String DBNAME = "testdb"; // Database Name
            final private static String USER = "testuser"; // user name for DB.
            final private static String PASS = "hoge$#34hoge5"; // password for DB.
            final private static String JDBCDriver = PostgresJDBCDriver;
            final private static String DBURL = "jdbc:postgresql://localhost/" + DBNAME;
    
    
            // MySQL 用デフォルト
            // Eclipse で MySQL を使いたいときは,次の手順で,WebContent\WEB-INF\lib にインポートしておく.
            // https://dev.mysql.com/downloads/connector/ から,Connector/J をダウンロード
            // c:\Program Files\Java\mysql-connector-java-5.1.7\ に置く.
            //     WebContent\WEB-INF\lib を右クリック.「一般」→「ファイルシステム」
            //     その後インポートすべきファイルとして,次のファイルを指定
            //       c:\Program Files\Java\mysql-connector-java-5.1.7\mysql-connector-java-5.1.7-bin.jar を追加
            // final private static String DBNAME = "testdb"; // Database Name
            // final private static String USER = "testuser"; // user name for DB.
            // final private static String PASS = "hoge$#34hoge5"; // password for DB.
            // final private static String JDBCDriver = MySQLJDBCDriver;
            // final private static String DBURL = "jdbc:mysql://localhost/" + DBNAME;
    
            // JavaDB用デフォルト
            // final private static String DBNAME = "dbdir;create=true"; // Java DB の場合は,Java DB データベースディレクトリ(相対)
            // final private static String DBDIR = "C:\\Program Files\\eclipse3.5\\eclipse\\"; // データベースが存在するディレクトリ
                    // DTP, DBViewer などを使ってデータベースを生成した場合は Eclipse インストールディレクトリ
                    // ij などを使ってデータベースを生成した場合は,c:\\<ワークスペース>\\<プロジェクト名>
            // final private static String USER = ""; // user name for DB. Java DB (Derby) の場合は空
            // final private static String PASS = ""; // password for DB. Java DB (Derby) の場合は空
            // final private static String JDBCDriver = JavaDBJDBCDriver;
            // final private static String DBURL = "jdbc:derby:" + DBDIR + DBNAME;
    
            // HiRDB用デフォルト
            // Eclipse で HiRDB を使いたいときは,次の手順で,WebContent\WEB-INF\lib にインポートしておく.
            //     WebContent\WEB-INF\lib を右クリック.「一般」→「ファイルシステム」
            //     その後インポートすべきファイルとして,次のファイルを指定
            //       C:\win32app\hitachi\hirdb_s\CLIENT\UTL\pdjdbc.jar
            // ユーザ名,パスワード: C:/windows/HiRDB.iniのPDUSER の値を調べておく
            // final private static String USER = "ユーザ名"; // user name for HiRDB. see C:/windows/HiRDB.ini
            // final private static String PASS = "パスワード"; // password for HiRDB. see C:/windows/HiRDB.ini
            // final private static String JDBCDriver = HiRDBDriver;
            // final private static String HiRDBServerName = "hitachi-664320D"; // HiRDB サーバのコンピュータ名
            // final private static String DBURL = "jdbc:hitachi:PrdbDrive://DBID=22200,DBHOST=" + HiRDBServerName + ",ENCODELANG=MS932"; // 'DBID=22200' is in "conf\pdsys";
    
    
        // この先は決まり文句
        private static Statement stmt = null;
        // 問い合わせ結果を System.out.print で,画面に出力
        public static void main(String[] args)
            throws SQLException {
            // Connection
            try {
                connect( USER, PASS );
                // 実行するSQL文と,出力フォーマットを記述する
    
                ResultSet rs = execute( "select * from commodity" );;
                DecimalFormat dformat = new DecimalFormat ("#,###円");
                while(rs.next()){
                    int t = rs.getInt("type");
                        String n = rs.getString("name");
                        int p = rs.getInt("price");
                        System.out.println(t + " " + n + " " + dformat.format( p ) );
                }
    
                rs.close();
                stmt.close();
                disconnect();
            }
            catch (Exception e) {
                // Error Message and Error Code
                System.out.print(e.toString());
                if (e instanceof SQLException) {
                    System.out.println("Error Code:" + ((SQLException)e).getErrorCode());
                }
                // Print Stack Trace
                e.printStackTrace();
                if (conn != null) {
                    conn.rollback();
                    conn.close();
                }
            }
        }
    
        /*
         *  Service Functions
         *  ここから先は,決まり文句を関数化したもの.
         */
        static Connection conn = null;
        //
        // database open
        //
        public static void connect( String user, String pass )
        throws SQLException, ClassNotFoundException {
            try {
                // JDBC Driver Loading
                Class.forName(JDBCDriver).newInstance();
                System.setProperty("jdbc.driver",JDBCDriver);
            }
            catch (Exception e) {
                // Error Message and Error Code
                System.out.print(e.toString());
                if (e instanceof SQLException) {
                    System.out.println("Error Code:" + ((SQLException)e).getErrorCode());
                }
                // Print Stack Trace
                e.printStackTrace();
            }
            try {
                // Connection
                if ( user.isEmpty() && pass.isEmpty() ) {
                    conn = DriverManager.getConnection(DBURL);
                }
                else {
                    Properties prop = new Properties();
                    prop.put("user", user);
                    prop.put("password", pass);
                    conn = DriverManager.getConnection(DBURL,prop);
                }
            }
            catch (Exception e) {
                // Error Message and Error Code
                System.out.print(e.toString());
                if (e instanceof SQLException) {
                    System.out.println("Error Code:" + ((SQLException)e).getErrorCode());
                }
                // Print Stack Trace
                e.printStackTrace();
                if (conn != null) {
                    conn.rollback();
                    conn.close();
                }
            }
        }
        //
        // database close
        //
        public static void disconnect()
            throws SQLException {
            try {
                conn.close();
            }
            catch (Exception e) {
                // Error Message and Error Code
                System.out.print(e.toString());
                if (e instanceof SQLException) {
                    System.out.println("Error Code:" + ((SQLException)e).getErrorCode());
                }
                // Print Stack Trace
                e.printStackTrace();
                if (conn != null) {
                    conn.rollback();
                    conn.close();
                }
            }
        }
        //
        // execute
        //
        public static ResultSet execute( String sql )
            throws SQLException {
            try {
                conn.setReadOnly(true);
                // Execute 'commit' Automatically after each SQL
                // conn.setAutoCommit(true);
                // Query Exection
                stmt = conn.createStatement();
                return stmt.executeQuery(sql);
            }
            catch (Exception e) {
                // Error Message and Error Code
                System.out.print(e.toString());
                if (e instanceof SQLException) {
                    System.out.println("Error Code:" + ((SQLException)e).getErrorCode());
                }
                // Print Stack Trace
                e.printStackTrace();
                if (conn != null) {
                    conn.rollback();
                    conn.close();
                }
                return null;
            }
        }
    }
    ----------------------ここまで----------------------
    
  6. ソースを保存

    「ファイル」→「保管」または CTRL+S で保存される. 保存時にコンパイルされる

    コンパイル時のエラーや警告があれば, Eclipse 内の問題・ビューに表示されるので確認する.

実行

  1. 実行したいクラスを選び,右クリック

    プロジェクト・エクスプローラで,パッケージ名の下にクラスファイル一覧が出ているので,実行したいクラスの「クラス名.java」 (つまり,HelloWorld.java)右クリック

  2. 実行」 → 「Javaアプリケーション (Java Application)」と操作

    もしくはAlt+Shift+Xを押し,J を押すという操作でもよい.

  3. 実行結果は次のようになる.

    1 apple 50円
    2 orange 20円
    3 strawberry 100円
    4 watermelon 150円
    5 melon 200円
    6 banana 100円
    
  4. 上記の実行において「接続できない」という意味のエラーが出た場合.

    他で「接続しっぱなし」という可能性があるので,Eclipse を再起動して,もう1度繰り返してみる.

    それでもダメなら,DBNAME, DBDIR 等の変数の値をチェック.

(参考)

Eclipse で データベースの中身を確認したいときは, Eclipse のデータツール・プラットホーム を使って,簡単にできる.


参考Webページ: http://www.atmarkit.co.jp/fjava/javafaq/jdbc/jdbc01.html