前に、WindowsにPostgres SQLをインストールしていたので、Javaで接続の練習をしたいと思います。
コマンドプロンプトから、PostgreSQLにログインできたということは、パソコンにインストールされてたということでしょう。
⇩ PosgreSQLのインストールなどは下記サイトへ
・【Windows】PostgreSQL入門知識とインストール手順 | Tech2GO
Javaでのデータベース接続にはJDBCクラスとJDBCドライバが必要
JDBC(Java DataBase Connectivity)と呼ばれるクラス群は標準で用意されているとのこと。ただ、JDBCドライバは、インストールする必要があります。
PostgresSQLのJDBCドライバをインストール
https://jdbc.postgresql.org/ にアクセスし『Download』をクリックします。
『If you are using Java 8 or newer then you should use the JDBC 4.2 version.』となっているので、『PostgreSQL JDBC 4.2 Driver, 42.1.1』を選択しました。
ダウンロードしたファイルを、Eclipseで作った『Javaプロジェクト』の中に『lib』フォルダみたいなものを作って、そこに配置しましょう。
ダウンロードしたJDBCドライバをあとから、参照することになるので、適当な場所に移動しておきましょう。
作成した『Javaプロジェクト』を選択した状態で、「プロジェクト(P)」>「プロパティ(P)」を選択します。
「Javaビルド・パス」を選択し、「ライブラリー(L)」 の「外部JARの追加(X)...」でダウンロードしたJDBCドライバのjarファイルを指定します。
移動しておいた、JDBCドライバを選択します。
JDBCドライバのjarファイルが追加されるので、「OK」を選択します。
参照ライブラリに追加されてればOKみたいです。
PosgresSQLにデータベースとテーブル作成
コマンドプロンプトなどで、PostgreSQLにログインします。
psql -U postgres
データベースの作成は、
CREATE DATABASE データベース名
作成できます。データベース一覧は、
\l
使用するデータベースを選択します。
\c データベース名
テーブルの表示は、
\dt;
テーブルの構造は、
\d テーブル名;
テーブル作成は、
CREATE TABLE orders( order_id int PRIMARY KEY, order_date date, client varchar(50), order_count int );
でテーブルができます、たぶん。INSERT文でデータを何件か入れておきましょう。
テーブルにデータが入っているか確認しましょう。
Eclipse側で、JavaファイルからSQL接続
Eclipseで、作成したJavaプロジェクト内の、「src」>「パッケージ」の中で、「ファイル」>「新規」>「クラス」でmainメソッドを持ったクラスファイルを作成します。
本当は、「パッケージ(K):」を作ってデフォルトパッケージを使わないようにするのが良いようです。「名前(M):」の入力と「どのメソッド・スタブを利用しますか?」で、「public static void main(String[] args)」にチェックして「完了(F)」をクリックします。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class SelectSample { public static void main(String[] args) { // データベース接続情報を格納する変数 Connection conn = null; // JDBCドライバの読み込み try { // postgresSQLのJDBCドライバを読みこみ Class.forName("org.postgresql.Driver"); } catch(ClassNotFoundException e) { // JDBCドライバが見つからない場合 e.printStackTrace(); } try { // データベースへの接続 conn = DriverManager.getConnection( "jdbc:postgresql:java_postgre", // データベース名 "postgres", // ユーザー名 "ts0818" // パスワード ); // SELECT文の発行と結果の取得 // Statement オブジェクトを生成 Statement stmt = conn.createStatement(); String sql = "SELECT * FROM orders"; ResultSet rset = stmt.executeQuery(sql); // 結果の表示 while(rset.next()) { System.out.println(rset.getString("client")); } } catch(SQLException e) { // 接続、SELECT文でエラーが発生した場合 e.printStackTrace(); } finally { // データベース接続の切断 if(conn != null) { try { conn.close(); conn = null; } catch(SQLException e) { // データベースの切断でエラーが発生した場合 e.printStackTrace(); } } } } }
PostgreSQLのデータベースにJavaファイルから接続してテーブルのデータの取得ができましたね。
次回は、トランザクションや、DAO(Data Access Object)とDTO(Data Transfer Object)や、JPA(Java Persistence API)などに入っていきたいですね。
今回はこのへんで。