はじめに
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を設定します。
ターミナルを起動し、以下コマンドを実行します。
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に作成したものとします。
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の起動とデータベースの作成
ターミナルを起動し、以下コマンドを実行します。
brew services start postgresql
createdb test
psql test
テスト用テーブルの作成
PostgreSQLのコンソールが起動したら、以下コマンドを実行します。
\i ~/Desktop/createTestTable.sql
\q
2. JDBCからDBへの接続及びデータの取得
呼び出し用のJavaファイルの作成
任意の場所に以下のファイルを作成します。
以下では~/Desktopに作成したものとします。
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ファイルのコンパイルと実行
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を用いてデータベースアクセスを行う方の手助けになればと思います。
誤り等あればご指摘頂けると幸いです。