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

【JDBC入門】テーブルから特定の列(カラム)だけを取得する方法をわかりやすく解説

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

カーソルはnext()メソッドを使って次の行へ移動でき、行内の各列の値は、ResultSetインターフェースが提供するゲッターメソッド(getInt()、getString()、getDate()など)を使って取得できます。

テーブルから特定の列を取得する手順

テーブルから必要なデータを取得するには、以下の手順を実行します。

  1. データベースに接続する
  2. Statementオブジェクトを作成する
  3. executeQuery()メソッドでSELECT文を実行する。引数には文字列形式のSELECTクエリを渡します

すべての列の値を取得する場合は、次のようなクエリを使用します。

Select * from TableName;

一方、特定の列だけを取得したい場合は、「*」の代わりに必要な列名を明示的に指定します。

select Name, DOB from Emp

実行例

ここでは、データベースに以下の構造を持つ「Emp」というテーブルが存在すると仮定します。

+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| Name     | varchar(255) | YES  |     | NULL    |       |
| DOB      | date         | YES  |     | NULL    |       |
| Location | varchar(255) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

次のJDBCプログラムは、Empテーブルから従業員の「Name(氏名)」と「DOB(生年月日)」の値を取得する例です。

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

public class RetrievingParticularColumn {
    public static void main(String args[]) throws Exception {
        // ドライバの登録
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());

        // データベースへの接続
        String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
        Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
        System.out.println("Connection established......");

        // Statementオブジェクトの作成
        Statement stmt = con.createStatement();

        // 特定の列のみを取得するクエリの実行
        ResultSet rs = stmt.executeQuery("select Name, DOB from Emp");

        System.out.println("Contents of the table");
        while(rs.next()) {
            System.out.print("Name of the Employee: "+rs.getString("Name")+", ");
            System.out.print("Date of Birth: "+rs.getDate("DOB"));
            System.out.println("");
        }
    }
}

実行結果

Connection established......
Contents of the table
Name of the Employee: Amit, Date of Birth: 1970-01-08
Name of the Employee: Sumith, Date of Birth: 1970-01-08
Name of the Employee: Sudha, Date of Birth: 1970-01-05

補足:列名と列インデックスの指定方法について

ゲッターメソッドでは、上記の例のように列名を指定する方法のほかに、1から始まる列のインデックスを指定する方法もあります。たとえば rs.getString(1) とすれば1列目の値を取得できます。ただし、列名で指定する方がコードの可読性が高く、テーブルの列の並び順が変わった場合にも影響を受けにくいため、一般的には列名での指定が推奨されます。

  1. JDBCでデータベースからファイル(CLOB)を取得する方法

    JDBCでデータベースからファイルを取得するには?データベースには、ファイルの内容をCLOB型として格納することが一般的です。ResultSetインターフェースには、このCLOB型のデータを取得するためのgetClob()メソッドとgetCharacterStream()メソッドが用意されています。どちらのメソッドも、引数として列のインデックスを表す整数、または列名を表す文字列を受け取り、指定された列の値を取得します。両者の違いは、getClob()メソッドがClobオブジェクトを返すのに対し、getCharacterStream()メソッドはCLOB型の内容を保持するReaderオブジェクト

  2. JDBCのgetCharacterStream()メソッドでテーブルからClob値を取得する方法【サンプルコード解説】

    JDBCのResultSetインターフェースには、データベースのテーブルからCLOB型(長文テキスト)のデータを取得するためのメソッドとして、getClob()とgetCharacterStream()の2つが用意されています。 どちらのメソッドも、引数に列のインデックスを表す整数(または列名を表す文字列)を指定でき、該当する列の値を取得します。両者の違いは戻り値の型です。getClob()メソッドがjava.sql.Clobオブジェクトを返すのに対し、getCharacterStream()メソッドは文字ストリームを扱うjava.io.Readerクラスのオブジェクトを直接返します。そのため