loading...

JDBCを利用してJavaからデータベースにアクセスする方法

programmingmonky profile image programmingMonky ・2 min read

本投稿ではJDBCを使ってJavaのプログラムからSQLの実行、実行結果の表示を行うことで、JDBCの使い方を説明します

前提としてまずはこちらの

https://dev.to/programmingmonky/postgresqlsql-3dja

記事の通りのデータベース、テーブルが作成されており、
データの投入とSQLの実行確認ができているものとします。

JDBCのダウンロード

https://jdbc.postgresql.org/download.html

こちらのサイトからJDBCをダウンロードします

jdbc

JDBCの追加先アプリケーションの作成

JDBCを追加するアプリケーションを作成します。

Eclipseを開き、ファイル>新規>Javaプロジェクトを選択

saku

適当な名前を付けてプロジェクトを作成してください

今回私はjdbcsampleとしました

jdbcsample

JDBCのビルドパスの追加

インストールしたJDBCを解凍し、Eclipseでビルドパスを追加してください

プロジェクト右クリック>ビルド・パス>外部アーカイブの追加 で解凍したJDBCを選択してください

追加

これでJDBCがプロジェクトに追加されました

追加されたJDBC

Javaのプログラム作成

ファイル>新規>クラスから新しくJavaのファイルを追加します。

名前にMainと付け、「完了」を押します。

作成したMainのファイルに以下のJavaのプログラムを張り付けます

package jdbcsample;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) throws Exception {

        try (
                Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/sample", // "jdbc:postgresql://<場所>:<ポート>/<データベース名>"
                        "postgres", //user
                        "postgres"); //password;
                Statement statement =    connection.createStatement();
                ResultSet resultSet = statement.executeQuery(

                        "select code,name_jp,region,\r\n" +
                        "count('1') over(partition by region) as num\r\n" +
                        "\r\n" +
                        "from m_country\r\n" +
                        "order by num"

                        );
                ){

            List<String> columns = new ArrayList<String>();

            ResultSetMetaData rsmd = resultSet.getMetaData();
            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                columns.add(rsmd.getColumnName(i));
            }

            System.out.println(resultSet);

            while (resultSet.next()) {
                System.out.println("\ncount:" + resultSet.getRow());

                columns.stream().forEach((i)->{try {
                    System.out.println(i + ":" + resultSet.getString(i));
                } catch (SQLException e) {
                    e.printStackTrace();
                }});
            }


        }
    }

}

プログラムの意味を一部解説すると

以下の部分でデータベースに接続しています

Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/sample", // "jdbc:postgresql://<場所>:<ポート>/<データベース名>"
    "postgres", //user
    "postgres"); //password;

※ユーザー名、ポート、パスワードがなどが私の環境と違う場合、別のものを選択してください。

以下の部分でSQLを実行して結果を受け取っています

ResultSet resultSet = statement.executeQuery(
        "select code,name_jp,region,\r\n" +
        "count('1') over(partition by region) as num\r\n" +
        "\r\n" +
        "from m_country\r\n" +
        "order by num"

        );

以下の部分で取得結果を表示する処理を実行しています。

while (resultSet.next()) {
    System.out.println("\ncount:" + resultSet.getRow());

    columns.stream().forEach((i)->{try {
        System.out.println(i + ":" + resultSet.getString(i));
    } catch (SQLException e) {
        e.printStackTrace();
    }});
}

このプログラムを保存し、
パッケージエクスプローラでプロジェクト名を右クリックし

実行>Javaアプリケーション

をクリックしてください。

実行結果

IDEのコンソール欄にSQLを実行した結果が表示されています。

java

同じSQLを実行しているのでこの投稿の実行結果と一致しているはずです。

code name_jp region num
643 ロシア連邦 ロシア 1
010 南極 南極 2
470 マルタ 地中海地域 2
196 キプロス 地中海地域 2
074 ブーベ島 南極 2
666 サンピエール島・ミクロン島 北アメリカ 3
840 アメリカ合衆国 北アメリカ 3
124 カナダ 北アメリカ 3

以上がJDBCの使い方になります。

Posted on by:

programmingmonky profile

programmingMonky

@programmingmonky

dev.toで日本語でわかりやすく技術情報を発信します。 日本でも2017年末に少しばかり話題になりましたが、dev.toはあまり利用されている印象がないのでもっと普及するべきだと思います。

Discussion

pic
Editor guide