カテゴリ: JavaのJDBC 更新日: 2026/05/08

JavaのJDBC ResultSetの使い方を完全解説 初心者でもわかるデータベース接続とデータ取得方法

2101
JDBC の ResultSet を使ってデータを取得する方法

先生と生徒の会話形式で理解しよう

生徒

「Javaでデータベースからデータを取得するにはどうすればいいですか?」

先生

「JavaではJDBCを使ってデータベースに接続し、ResultSetを利用して検索結果のデータを取得します。」

生徒

「ResultSetって何ですか?」

先生

「SQLのSELECT文を実行した結果を一行ずつ取り出すための仕組みです。順番にデータを読み込めます。」

生徒

「初心者でも理解できますか?」

先生

「基本から順番に学べば大丈夫です。JDBCの仕組みとResultSetの使い方を丁寧に解説していきます。」

1. JDBCとResultSetとは何か

1. JDBCとResultSetとは何か
1. JDBCとResultSetとは何か

JDBCはJavaからデータベースに接続するための標準的な仕組みです。MySQLやPostgreSQLなどのデータベースと通信するために使用します。Javaでデータベース接続を行い、SQLを実行し、その実行結果を取得するために重要な役割を持つのがResultSetです。

ResultSetは、SELECT文などの検索結果を表形式で保持するオブジェクトです。データベースから取得した複数行のデータを、一行ずつ順番に読み込むことができます。Java初心者がJDBCを学ぶ際に必ず理解すべき重要なクラスです。

2. JDBCでデータを取得する基本手順

2. JDBCでデータを取得する基本手順
2. JDBCでデータを取得する基本手順

JDBCでデータベースからデータを取得する流れは次の通りです。まずデータベースに接続し、次にSQLを実行し、最後にResultSetで結果を処理します。


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;

public class JdbcSelectExample {
    public static void main(String[] args) throws Exception {
        String url = "jdbc:mysql://localhost:3306/sampledb";
        String user = "root";
        String password = "password";

        Connection conn = DriverManager.getConnection(url, user, password);
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT id, name FROM users");

        while (rs.next()) {
            int id = rs.getInt("id");
            String name = rs.getString("name");
            System.out.println(id + " : " + name);
        }

        rs.close();
        stmt.close();
        conn.close();
    }
}

このコードでは、DriverManagerでデータベース接続を行い、StatementでSQLを実行し、ResultSetで検索結果を取得しています。while文でnextメソッドを使うことで、データを一行ずつ読み込んでいます。

3. ResultSetのnextメソッドの仕組み

3. ResultSetのnextメソッドの仕組み
3. ResultSetのnextメソッドの仕組み

ResultSetはカーソルと呼ばれる位置情報を持っています。最初はデータの一行目の前に位置しており、nextを呼び出すと次の行に移動します。データが存在しない場合はfalseが返ります。


while (rs.next()) {
    System.out.println("データがあります");
}

この仕組みを理解することで、Javaのデータベース処理の基本が身につきます。JDBCのResultSetは一方向にしか進まないことが基本です。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. データ型ごとの取得方法

4. データ型ごとの取得方法
4. データ型ごとの取得方法

ResultSetでは、カラムのデータ型に応じて取得方法が異なります。整数はgetInt、文字列はgetString、日付はgetDateなどを使用します。


int age = rs.getInt("age");
String email = rs.getString("email");
double salary = rs.getDouble("salary");

データ型に合ったメソッドを使用することが重要です。型が一致しない場合はエラーになることがあります。Java初心者はデータ型の違いにも注意しましょう。

5. PreparedStatementで安全に取得する方法

5. PreparedStatementで安全に取得する方法
5. PreparedStatementで安全に取得する方法

実際の開発ではStatementよりもPreparedStatementを使うことが推奨されます。SQLインジェクション対策になり、安全にデータベース検索ができます。


import java.sql.PreparedStatement;

String sql = "SELECT id, name FROM users WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 1);

ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
    System.out.println(rs.getString("name"));
}

PreparedStatementを使うことで、パラメータを安全に設定できます。Java JDBCの実務では必須の知識です。

6. ResultSetの注意点とよくあるエラー

6. ResultSetの注意点とよくあるエラー
6. ResultSetの注意点とよくあるエラー

ResultSetは必ずcloseで閉じる必要があります。閉じ忘れるとメモリリークの原因になります。また、カラム名のスペルミスや存在しないカラムを指定すると例外が発生します。


if (rs.next()) {
    String name = rs.getString(1);
    System.out.println(name);
}

カラム番号で取得する方法もありますが、可読性を考えるとカラム名で取得する方法が推奨されます。Javaデータベース接続では正確なSQLと正しいカラム指定が重要です。

7. JDBC ResultSetを使いこなすためのポイント

7. JDBC ResultSetを使いこなすためのポイント
7. JDBC ResultSetを使いこなすためのポイント

Javaでデータベースからデータ取得を行う際は、接続処理、SQL実行、ResultSet処理、クローズ処理という流れを正しく理解することが大切です。JDBCの基礎をしっかり身につけることで、Webアプリケーション開発や業務システム開発にも応用できます。

ResultSetはJavaのデータベースプログラミングの中心となる存在です。JDBC接続方法、SELECT文の実行方法、データ型の取得方法を繰り返し練習することで、初心者でも確実に理解できます。

まとめ

まとめ
まとめ

ここまでJavaのJDBCとResultSetの使い方について、データベース接続の基本からSELECT文によるデータ取得方法、nextメソッドの仕組み、データ型ごとの取得方法、PreparedStatementによる安全なSQL実行、そしてResultSetの注意点まで順番に学んできました。Javaでデータベースに接続する際には、Connectionで接続を確立し、StatementまたはPreparedStatementでSQLを実行し、その実行結果をResultSetで受け取り、一行ずつ処理するという流れが基本になります。

特に重要なのは、ResultSetはカーソルを使ってデータを順番に読み込む仕組みであるという点です。nextメソッドを呼び出すことで次の行へ移動し、データが存在する限りtrueを返します。この繰り返し処理こそが、Javaでのデータベース検索処理の中核です。Java初心者がJDBCを理解するためには、この流れを何度もコードを書きながら体験することが大切です。

また、getIntやgetStringなどの取得メソッドは、データベースのカラム型と対応していることを理解しておきましょう。データ型の不一致は例外の原因になります。Javaの型とデータベースの型の関係を正しく理解することが、安定したプログラム開発につながります。さらに、実務ではPreparedStatementを使用し、パラメータを安全に設定することが推奨されます。これによりSQLインジェクション対策が可能になり、安全なデータベースアクセスが実現できます。

ResultSetのクローズ処理も忘れてはいけません。closeを適切に呼び出すことで、リソースの解放が行われ、メモリリークや接続数の枯渇を防ぐことができます。JavaのJDBCプログラミングでは、接続の確立、SQL実行、ResultSet処理、リソース解放という一連の流れを正確に理解することが、安定した業務システム開発やWebアプリケーション開発への第一歩になります。

総復習サンプルプログラム


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

public class JdbcResultSetSummary {
    public static void main(String[] args) throws Exception {

        String url = "jdbc:mysql://localhost:3306/sampledb";
        String user = "root";
        String password = "password";

        Connection conn = DriverManager.getConnection(url, user, password);

        String sql = "SELECT id, name, age FROM users WHERE age > ?";
        PreparedStatement pstmt = conn.prepareStatement(sql);
        pstmt.setInt(1, 20);

        ResultSet rs = pstmt.executeQuery();

        while (rs.next()) {
            int id = rs.getInt("id");
            String name = rs.getString("name");
            int age = rs.getInt("age");

            System.out.println(id + " : " + name + " : " + age);
        }

        rs.close();
        pstmt.close();
        conn.close();
    }
}

実行結果例


1 : Tanaka : 25
2 : Suzuki : 30
3 : Sato : 28

このように、JavaのJDBC ResultSetを正しく理解すれば、データベースからのデータ取得処理は決して難しいものではありません。基本構文を繰り返し練習し、Connection、PreparedStatement、ResultSetの役割を明確に区別できるようになることが重要です。Javaデータベース接続の基礎を身につけることで、実務レベルのデータ操作や検索処理にも自信を持って取り組めるようになります。

先生と生徒の振り返り会話

生徒

Javaでデータベース接続をする流れがやっと整理できました。Connectionで接続して、PreparedStatementでSQLを実行して、ResultSetで結果を受け取るのですね。

先生

その通りです。そしてResultSetのnextメソッドで一行ずつ読み込むことが重要です。これがJava JDBCの基本構造です。

生徒

getIntやgetStringなどのメソッドは、カラムの型に合わせて使う必要があることも理解できました。型が違うとエラーになるのですね。

先生

はい。Javaのデータ型とデータベースの型の対応関係を意識することが大切です。そして必ずcloseでリソースを解放することも忘れないでください。

生徒

PreparedStatementを使えば安全にSQLを実行できることも分かりました。実務では必須ですね。

先生

その理解で十分です。JavaのJDBCとResultSetを使いこなせるようになれば、データベース連携アプリケーション開発の基礎は完成です。繰り返しコードを書いて体に覚えさせましょう。

JavaのJDBCの一覧へ
新着記事
Flutter
Flutterでのリポジトリパターンの実装例
Flutterでリポジトリパターンを実装する方法を完全解説!初心者向けアーキテクチャ設計入門
Java
Java の Objects クラスを使って null チェックを簡単にする方法
JavaのObjectsクラスの使い方を完全ガイド!nullチェックを簡単・安全に行う方法
Java
Java の UUID クラスを使って一意の識別子を作成する方法
JavaのUUIDクラスの使い方を完全ガイド!初心者でもわかる一意な識別子の作成方法
Java
Java の古い日付クラス(Date, Calendar)と新しい日付 API の違い
JavaのDateとCalendarと新しい日付APIの違いとは?初心者向け完全ガイド
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク