DEV Community

programmingMonky
programmingMonky

Posted on

2 1

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

本投稿では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();
                }});
            }


        }
    }

}



Enter fullscreen mode Exit fullscreen mode

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

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



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


Enter fullscreen mode Exit fullscreen mode

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

以下の部分で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"

        );



Enter fullscreen mode Exit fullscreen mode

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



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();
    }});
}



Enter fullscreen mode Exit fullscreen mode

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

実行>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の使い方になります。

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay