5
3

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 3 years have passed since last update.

MacOSでのPostgresSQLを用いたJDBCの始め方

Last updated at Posted at 2020-04-30

はじめに

JDBCを触る機会があったのですが、個人用の環境でも練習したいと思い、PostgreSQLを導入した際の手順です。基本的には備忘録です。

各種バージョン等


- macOS : 10.15.4
- JDK : 13.0.1
- PostgreSQL : 12.2
- JDBC Driver : 42.4.12
- ターミナル : bash

Homebrewを用いてPostgreSQLをインストール

上記の記事を参考にPostgreSQLをインストールします。
以下では、userとpasswordはpostgresqlとして説明します。

PostgreSQL JDBC Driverをダウンロード

上記ページからJDBC Driverをダウンロードします。

JDBC Driver(jarファイル)の設置とCLASSPATHの設定

MacOSかつ、JDKのバージョンが8以下であれば、Java外部ライブラリ(jarファイル等)を/Library/Java/Extensionsに設置するとクラスローダーがコンパイル時にJDBCのクラスファイルを探してくれます。
しかし、今回はJDK13を用いているためCLASSPATHを設定する必要があります。

1. JDBC Driverの設置

ダウンロードしたpostgresql-42.2.12.jar/Library/Java/Extensionsに設置します。

2. CLASSPATHの設定

コンパイル時にクラスローダーに反応させるために、環境変数CLASSPATHを設定します。
ターミナルを起動し、以下コマンドを実行します。

CLASSPATHの設定及び再読み込み
echo 'export CLASSPATH=.:/Library/Java/Extensions/postgresql-42.2.12.jar:$CLASSPATH' >> .bash_profile
source ~/.bash_profile

1行目は.bash_profileへのCLASSPATHの書き込み
2行目は.bash_profileの再読み込み
をそれぞれ行っています。

JDBCを用いたPostgreSQLへの接続テスト

最後に、テストテーブルの作成とデータベースへの接続及びデータの取得のデモを行います。

1. テスト用テーブルの作成

テストテーブル作成用SQLの作成

任意の場所に以下のファイルを作成します。
以下では~/Desktopに作成したものとします。

createTestTable.sql
create table test(
    id serial primary key,
    name varchar(255),
    point real
);
insert into test(name,point) values
('foo', 41.2),
('bar',55.1),
('baz', 10.7),
('qux', 98.0),
('quux', 22.2),
('foobar', 35.6);

PostgreSQLの起動とデータベースの作成

ターミナルを起動し、以下コマンドを実行します。

PostgreSQLの起動とデータベースの作成
brew services start postgresql
createdb test
psql test

テスト用テーブルの作成

PostgreSQLのコンソールが起動したら、以下コマンドを実行します。

テスト用テーブルの作成
\i ~/Desktop/createTestTable.sql
\q

2. JDBCからDBへの接続及びデータの取得

呼び出し用のJavaファイルの作成

任意の場所に以下のファイルを作成します。
以下では~/Desktopに作成したものとします。

Main.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Main {
    public static void main(String[] args) {
        String url = "jdbc:postgresql://localhost/test";
        String user = "postgresql";
        String password = "postgresql";
        String sql = "select * from test";

        try(Connection con = DriverManager.getConnection(url, user, password)){
            try(PreparedStatement ps = con.prepareStatement(sql)){
                ResultSet rs = ps.executeQuery();
                while (rs.next()){
                    System.out.print(rs.getString("name"));
                    System.out.print(" gets ");
                    System.out.println(rs.getInt("point"));
                }
            } catch(SQLException e){
                e.printStackTrace();
            }
        } catch(SQLException e){
            e.printStackTrace();
        }
    }
}

Javaファイルのコンパイルと実行

Javaファイルのコンパイルと実行
cd ~/Desktop
javac Main.java
java Main

出力結果


foo gets 41.2
bar gets 55.1
baz gets 10.7
qux gets 98.0
quux gets 22.2
foobar gets 35.6

おわりに

初めてJDBCを用いてデータベースアクセスを行う方の手助けになればと思います。
誤り等あればご指摘頂けると幸いです。

参考文献

5
3
0

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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?