JDBC で PostgreSQL に接続して、SELECT文を実行する方法を書いていきます。
連載記事
- DBとプロジェクトの準備
- INSERT文の実行
- SELECT文の実行
- UPDATE文の実行
- DELETE文の実行
1. 全件取得用のプログラム
以下の Javaコードは、登録済みのメモを全て表示します。
src/main/java/org/sample/SelectAll.java
package org.sample; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; public class SelectAll { // localhost の 5432 ポート、データベース test に接続 private static final String URL = "jdbc:postgresql://localhost:5432/test"; private static final String SQL = "SELECT id, txt FROM memo"; public static void main(String[] args) throws SQLException { // DB のユーザ名を usr、パスワードを pass に設定 Properties props = new Properties(); props.setProperty("user", "usr"); props.setProperty("password", "pass"); try ( // コネクションを取得して SQL を実行 Connection con = DriverManager.getConnection(URL, props); PreparedStatement ps = con.prepareStatement(SQL); ResultSet rs = ps.executeQuery() ) { // 実行結果のデータを表示 while (rs.next()) { System.out.print("id="); System.out.print(rs.getInt(1)); System.out.print(", txt="); System.out.println(rs.getString(2)); } } } }
1.1. SQLの実行と結果の表示
以下のクラスを使って、SQL の実行と結果の表示をしています。
1.2. try-with-resources文について
以下のクラスは、close()
を自動実行するために try
の括弧内に記載しています。
- Connection
- PreparedStatement
- ResultSet
詳細は以下のリンク先を参照して頂ければと思います。
2. 1件取得用のプログラム
以下の Javaコードは、登録済みのメモを1件表示します。
src/main/java/org/sample/Select.java
package org.sample; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; public class Select { // localhost の 5432 ポート、データベース test に接続 private static final String URL = "jdbc:postgresql://localhost:5432/test"; private static final String SQL = "SELECT id, txt FROM memo WHERE id = ?"; public static void main(String[] args) throws SQLException { // DB のユーザ名を usr、パスワードを pass に設定 Properties props = new Properties(); props.setProperty("user", "usr"); props.setProperty("password", "pass"); try ( // コネクションを取得してプリペアド文を作成 Connection con = DriverManager.getConnection(URL, props); PreparedStatement ps = con.prepareStatement(SQL) ) { // SQL の1番目の ? に数値を設定して実行 ps.setInt(1, 2); try (ResultSet rs = ps.executeQuery()) { // 実行結果のデータを表示 while (rs.next()) { System.out.print("id="); System.out.print(rs.getInt(1)); System.out.print(", txt="); System.out.println(rs.getString(2)); } } } } }
2.1. 条件の指定について
以下の行で、SQL の1番目の ?
に 2
を設定しています。
ps.setInt(1, 2);
3. 動作確認
上のプログラムを実行すると、登録済みのメモが表示されます。動作しない場合は、以下のリンク先をご確認頂ければと思います。