MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

JDBCのResultSetとは?ResultSetオブジェクトからデータを取得する方法を徹底解説

JDBCにおけるResultSetインターフェースは、SQLクエリを実行した結果として生成される表形式(テーブル形式)のデータを表現するためのものです。ResultSetは現在の行を指し示す「カーソル」を持っており、初期状態では、このカーソルは最初の行の直前に位置しています。

JDBCのResultSetとは?ResultSetオブジェクトからデータを取得する方法を徹底解説

カーソルを移動して結果セットを走査する

ResultSetインターフェースが提供するnext()メソッドを使うと、現在のカーソル位置から次の行へとポインタを移動できます。このメソッドはboolean値を返し、次の行が存在すればtrue、現在位置以降にこれ以上の行がない場合はfalseを返します。

そのため、whileループの中でnext()メソッドを使用することで、結果セットに含まれるすべての行を順番に処理することが可能です。

while(rs.next()){
}

各行のカラム値を取得する方法

ResultSetインターフェースには、行内の各カラムの値を取り出すためのgetterメソッド(getXXX())も用意されています。これらのgetterメソッドには、それぞれ2種類のバリアントが存在します。

  • getXXX(int columnIndex): カラムのインデックス番号(1から始まる整数値)を受け取り、該当するカラムの値を返します。

  • getXXX(String columnLabel): カラム名(ラベル)を表す文字列を受け取り、該当するカラムの値を返します。

なお、getterメソッドは対象となるテーブルのカラムのデータ型に応じて適切なものを選択して使用する必要があります。たとえば文字列ならgetString()、数値ならgetInt()やgetLong()などを使います。

サンプルで使用するテーブル

ここでは、「dataset」という名前のテーブルがあり、以下のようなデータが格納されているものと仮定します。

+--------------+-----------+
| mobile_brand | unit_sale |
+--------------+-----------+
| Iphone       |      3000 |
| Samsung      |      4000 |
| Nokia        |      5000 |
| Vivo         |      1500 |
| Oppo         |       900 |
| MI           |      6400 |
| MotoG        |      4360 |
| Lenovo       |      4100 |
| RedMi        |      4000 |
| MotoG        |      4360 |
| OnePlus      |      6334 |
+--------------+-----------+

実践例:Datasetテーブルの全レコードを取得して表示する

次のJavaプログラムは、Datasetテーブルからすべてのレコードを取得し、その内容を出力する例です。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class RetrievingData {
   public static void main(String args[]) throws Exception {
      //ドライバの登録
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //データベースへの接続を確立
      String mysqlUrl = "jdbc:mysql://localhost/TestDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("接続が確立されました......");

      //Statementオブジェクトを作成
      Statement stmt = con.createStatement();
      //SELECT文を実行してデータを取得
      ResultSet rs = stmt.executeQuery("select * from Dataset");

      System.out.println("テーブルの内容");
      while(rs.next()) {
         System.out.print("Brand: "+rs.getString("Mobile_Brand")+", ");
         System.out.print("Sale: "+rs.getString("Unit_Sale"));
         System.out.println("");
      }
   }
}

実行結果

上記のプログラムを実行すると、以下のようにテーブル内の全レコードが出力されます。

接続が確立されました......
テーブルの内容
Brand: Iphone, Sale: 3000
Brand: Samsung, Sale: 4000
Brand: Nokia, Sale: 5000
Brand: Vivo, Sale: 1500
Brand: Oppo, Sale: 900
Brand: MI, Sale: 6400
Brand: MotoG, Sale: 4360
Brand: Lenovo, Sale: 4100
Brand: RedMi, Sale: 4000
Brand: MotoG, Sale: 4360
Brand: OnePlus, Sale: 6334

まとめ

このように、JDBCでデータベースからデータを取得する際には、executeQuery()メソッドの戻り値として得られるResultSetオブジェクトを操作します。next()メソッドでカーソルを1行ずつ進めながら、getXXX()メソッドを使って各カラムの値を取得するのが基本的な流れです。カラムはインデックスでもカラム名でも指定できるため、可読性を重視する場合はカラム名での指定がおすすめです。

  1. OnePlusからOnePlusへデータを移行する3つの簡単な方法【初心者向け完全ガイド】

    誕生日のプレゼントとして兄弟から OnePlus 8 を贈られた Shirley さんは、その美しいデザインに大興奮。しかし今、古い OnePlus 端末から新しい端末へデータやファイルを移行する方法に頭を悩ませています。これは、スマートフォンを機種変更する際に多くのユーザーが直面するよくある悩みです。OnePlus 端末の進化は魅力的で、つい最新モデルを購入したくなりますよね。そんなとき、端末間のデータ移行が面倒だと感じる方も少なくありません。実は、OnePlus から OnePlus へのデータ移行を手軽に行える便利な方法がいくつかあります。ここでは、データを失うことなく移行を完了させるた

  2. HuaweiからHuaweiへのデータ移行を徹底解説!2つの簡単な方法と比較

    新しいHuaweiスマートフォンに機種変更できたのは嬉しいけれど、旧機種から新機種へデータをどう移せばいいのか悩んでいませんか?ご安心ください。この記事では、HuaweiからHuaweiへデータを移行するための2つの最適な方法を、初心者にもわかるよう手順付きで詳しく解説します。古いHuawei端末に保存されたデータの大切さは私たちも十分理解しているので、ぜひ最後まで読んで参考にしてください。方法1:MobileTransを使ってワンクリックでデータ移行Huawei間のデータ移行ツールは数多くありますが、特におすすめなのが「MobileTrans – Phone Transfer」です。このツー