37
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

とにかくすぐJavaからPostgreSQLに接続を試したい

Last updated at Posted at 2016-11-18

#■概要
とにかくちょろっと使いたい人向け
Windows版です。

※はじめに、ユーザーを新しく作ってそのユーザーでSQLを実行! とやろうとするとハマるので(ハマりました)
 初めから登録されているスーパーユーザーで進めて行きます。

ざっくりと流れを説明すると、
1.PostgreSQL本体とJDBCドライバを入手する
2.Javaで新規プロジェクトを作成し、jarを参照し、ソースコードをコピペする
3.実行!
と言った感じです。
初期から存在しているテーブルを参照しに行くので、準備のためのCREATE文もINSERT文も必要ありません。

#■準備

##・PostgreSQL本体の入手
http://www.postgresql.jp/download
ダウンロードリンクから、OSに対応したPostgreSQLをダウンロードする
ダウンロード.png

今回はWindowsの64bit版
ダウンロード2.png

##・JDBCドライバの入手
JavaでPostgreSQLへ接続するためにはJDBCドライバが必要
https://jdbc.postgresql.org/download.html
JDBC.png

Current Versionからダウンロードするドライバを選択。
Java8の場合は、

JDBC42 Postgresql Driver, Version 9.4.1212

を選択。(バージョン部分は2016/11/18時点)

Java8以外の場合は、
Other Versionsを見るとJDKに対してどれを選択したら良いのかが書いてある。
JDBC2.png

ダウンロード後、解答し、jarファイルを適当な場所に置いておく。

#■PostgreSQLのインストール
何も変更しないで次に進んでいく。
パスワードを決める箇所があるので、入力しパスワードをメモしておく(重要)。

Password:test

#■Javaのプロジェクトを作成
##・新規作成
File -> New -> Java Project
image

ProjectName:ConnectPostgreSample(すでに存在しているので、画像は名前の末尾に2をつけています)
image

##・メインクラスの作成
src右クリック -> New -> Class
image

Name:Main(すでに存在しているので、画像は名前の末尾に2をつけています)
image

##・JDBCのjarを参照する
プロジェクトを右クリック -> Build Path -> Add External Archives
image

準備のときに取得したJDBC用のjarファイルを選択する。
image

##・以下のコードをコピペする
作成したメインクラスに以下のコードをコピペします。

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

public class Main {

	public static void main(String[] args) throws Exception {
		Connection connection = null;
		Statement statement = null;
		ResultSet resultSet = null;

		try {
			//-----------------
			// 接続
			//-----------------
			connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/sampleDatabase", // "jdbc:postgresql://[場所(Domain)]:[ポート番号]/[DB名]"
					"postgres", // ログインロール
					"test"); // パスワード
			statement = connection.createStatement();

			//-----------------
			// SQLの発行
			//-----------------
			//ユーザー情報のテーブル
			resultSet = statement.executeQuery("SELECT * FROM pg_shadow");

			//-----------------
			// 値の取得
			//-----------------
			// フィールド一覧を取得
			List<String> fields = new ArrayList<String>();
			ResultSetMetaData rsmd = resultSet.getMetaData();
			for (int i = 1; i <= rsmd.getColumnCount(); i++) {
				fields.add(rsmd.getColumnName(i));
			}
			
			//結果の出力
			int rowCount = 0;
			while (resultSet.next()) {
				rowCount++;

				System.out.println("---------------------------------------------------");
				System.out.println("--- Rows:" + rowCount);
				System.out.println("---------------------------------------------------");
				
				//値は、「resultSet.getString(<フィールド名>)」で取得する。
				for (String field : fields) {
					System.out.println(field + ":" + resultSet.getString(field));
				}
			}
			
			
		} finally {
			//接続を切断する
			if (resultSet != null) {
				resultSet.close();
			}
			if (statement != null) {
				statement.close();
			}
			if (connection != null) {
				connection.close();
			}
		}
	}

}

##・実行する
※pg_shadowテーブルは最初から存在するユーザー情報が格納されているテーブルなので、
テーブルを作ることも、データを入れることもせずに使うことが出来ます。

---------------------------------------------------
--- Rows:1
---------------------------------------------------
usename:user
usesysid:16393
usecreatedb:t
usesuper:f
userepl:f
usebypassrls:f
passwd:md55d9c68c6c50ed3d02a2fcf54f63993b6
valuntil:2016-11-17 14:34:06+09
useconfig:null

#■以上
新人さんにPostgreSQLをとりあえず試してもらいたい時などにご利用ください。

続き
コマンドプロンプトからPostgreSQLに接続します。
http://qiita.com/wb773/items/c2fd0e1e0349a41b5844

37
31
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?