Web系開発メモ

Java, C#, HTML, CSS, JavaScript のことなどを書いてます。

Java JDBCでPostgreSQLに接続 3.SELECT文の実行方法

JDBCPostgreSQL に接続して、SELECT文を実行する方法を書いていきます。

連載記事

  1. DBとプロジェクトの準備
  2. INSERT文の実行
  3. SELECT文の実行
  4. UPDATE文の実行
  5. 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

詳細は以下のリンク先を参照して頂ければと思います。

try-with-resources文 - Oracle

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. 動作確認

上のプログラムを実行すると、登録済みのメモが表示されます。動作しない場合は、以下のリンク先をご確認頂ければと思います。

1. DBとプロジェクトの準備

次の記事

4. UPDATE文の実行