tyoshikawa1106のブログ

- Force.com Developer Blog -

Java:JDBCドライバを使ってPostgreSQLにアクセスする手順

JDBCドライバのダウンロード

次のリンク先でJDBCドライバをダウンロードできます。

f:id:tyoshikawa1106:20160909141434p:plain

PostgreSQL JDBC Driver


最新版をダウンロードします。
f:id:tyoshikawa1106:20160909141602p:plain


これで『postgresql-9.4.1210.jre6.jar』ファイルを取得できました。

Javaプロジェクトの作成とJARファイルの読み込み設定

次はJavaのサンプルプロジェクトを作成して動かしてみます。プロジェクト名にDBTestを入力して後はデフォルト値のまま作成します。
f:id:tyoshikawa1106:20160909141917p:plain


プロジェクト作成後は、プロジェクトフォルダ配下にlibフォルダを作成します。先ほどダウンロードしたjarファイルをlibフォルダ内に格納します。
f:id:tyoshikawa1106:20160909142319p:plain


続いてJarファイルの読み込み設定です。プロジェクトフォルダを右クリックしてPropertiesを選択します。
f:id:tyoshikawa1106:20160909142014p:plain


Java Build Pathを選択してLibraryタブをクリックします。そこのAdd External JARsボタンから設定を行います。
f:id:tyoshikawa1106:20160909142629p:plain


先程のJARファイルを選択します。
f:id:tyoshikawa1106:20160909142742p:plain


最後にOKボタンをクリックして変更を反映させます。これでJARファイルの読み込み設定が完了しました。
f:id:tyoshikawa1106:20160909142852p:plain

データベースとテーブルの準備

まずはデータベースの作成から

CREATE DATABASE javasample;

f:id:tyoshikawa1106:20160909143500p:plain


次のコマンドで実際に作成されていることを確認できます。

\l

f:id:tyoshikawa1106:20160909143550p:plain


続いてbookテーブルを作成

CREATE TABLE book (
  id text PRIMARY KEY,
  name text,
  price integer
);

f:id:tyoshikawa1106:20160909143727p:plain

サンプルデータの準備

サンプルデータ登録用のINSERT文はこんな感じ。日本語入力したら???に変換されてうまく実行できなかったので今回は英語表記。

INSERT INTO book (id, name, price) VALUES
  ('001', 'Encyclopedia', 2000),
  ('002', 'Novel', 1000),
  ('003', 'Comic', 500),
  ('004', 'Business Books', 500),
  ('005', 'Technical Book', 3000);

f:id:tyoshikawa1106:20160909145109p:plain


次のSELECT文でデータが登録されていることを確認できると思います。

SELECT * FROM book;

f:id:tyoshikawa1106:20160909145709p:plain


これでサンプルデータの準備も完了です。

Javaからクエリを実行するときのサンプル

package jp.co.bbreak.sokusen._3._4;

import java.sql.*;

public class SelectSample {
    public static void main(String[] args) {
        // データベースへの接続情報を格納する変数
        Connection conn = null;
        
        // JDBCドライバの読み込み
        try {
            // postgreSQLのJDBCドライバを読み込み
            Class.forName("org.postgresql.Driver");
        } catch(ClassNotFoundException e) {
            // JDBCドライバが見つからない場合
            e.printStackTrace();
        }
        
        try {
            // 1. データベースへの接続
            conn = DriverManager.getConnection("jdbc:postgresql:javasample", "postgres", "pass");
            
            // 2. SELECT文の発光と結果の取得
            // Statementオブジェクトを生成
            Statement stmt = conn.createStatement();
            // SELECT文の発行と検索結果を格納する
            ResultSet rset = stmt.executeQuery("SELECT * FROM book");
            
            // 3. 結果の表示
            while (rset.next()) {
                System.out.println(rset.getString("name"));
            }
        } catch(SQLException e) {
            // 接続、SELECT文の発行でエラーが発生した場合
            e.printStackTrace();
        } finally {
            // 4.データベース接続の切断
            if (conn != null) {
                try {
                    conn.close();
                    conn = null;
                } catch (SQLException e) {
                    // データベース接続の切断でエラーが発生した場合
                    e.printStackTrace();
                }
            }
        }
    }
}


これで動くはずですが、Exceptionエラーが発生しました。

FATAL: password authentication failed for user "postgres"


解決したら追記します。