JDBCを利用してJavaからデータベースにアクセスする方法
Tags: java, sql, jdbc
Published: 2018-07-20 09:11:09

---
title: JDBCを利用してJavaからデータベースにアクセスする方法
published: true
description: 
tags: Java,SQL,JDBC
---

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

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

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

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


# JDBCのダウンロード

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

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

![jdbc](https://thepracticaldev.s3.amazonaws.com/i/ztp0uyyfsf1uebamjzib.PNG)


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

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

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

![saku](https://thepracticaldev.s3.amazonaws.com/i/80a0oijptand3696o3rb.PNG)

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

今回私はjdbcsampleとしました

![jdbcsample](https://thepracticaldev.s3.amazonaws.com/i/clvtdqcbgin356mkue5x.PNG)

# JDBCのビルドパスの追加

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

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

![追加](https://thepracticaldev.s3.amazonaws.com/i/dgncb05uh4oirp8orinb.PNG)

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

![追加されたJDBC](https://thepracticaldev.s3.amazonaws.com/i/m7pjon5f0lu4g75foig3.PNG)

# 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](https://thepracticaldev.s3.amazonaws.com/i/04y57eyplz4945b36v1d.PNG)


同じSQLを実行しているので[この投稿](https://dev.to/programmingmonky/postgresqlsql-3dja)の実行結果と一致しているはずです。

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

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