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

JavaとMySQLでテーブルから単一の結果(1件のレコード)のみを取得する方法

JavaからMySQLデータベースに接続し、テーブル内の多数のレコードの中から先頭の1件だけを取得したいケースはよくあります。そのような場合は、SQLのLIMIT句を使用するのが最も簡単で効率的な方法です。この記事では、テーブルの作成からJava側のコード実装まで、手順を追って解説します。

1. サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> Id int,
    -> Name varchar(20)
    -> );
Query OK, 0 rows affected (1.37 sec)

2. テストデータの挿入

INSERTコマンドを使って、テーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable values(101,'Chris');
Query OK, 1 row affected (0.54 sec)
mysql> insert into DemoTable values(102,'David');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(103,'Mike');
Query OK, 1 row affected (0.12 sec)

3. テーブル内の全レコードを確認

SELECT文を実行して、テーブルに登録されたすべてのレコードを表示してみます。

mysql> select * from DemoTable;

実行結果は以下の通りです。3件のレコードが登録されていることがわかります。

+------+-------+
| Id   | Name  |
+------+-------+
| 101  | Chris |
| 102  | David |
| 103  | Mike  |
+------+-------+
3 rows in set (0.00 sec)

4. Javaから1件だけ取得するサンプルコード

それでは、JavaからMySQLへ接続してレコードを取得するコードを見てみましょう。ポイントは、クエリにlimit 1を付けることで、テーブルの先頭にある1件のレコードのみをフェッチできる点です。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import com.mysql.jdbc.ResultSetMetaData;
public class OneResultDemo {
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement ps = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/web?useSSL=false", "root", "123456");
            String query = "select *from DemoTable " + " limit 1";
            st = con.createStatement();
            rs = st.executeQuery(query);
            while (rs.next()) {
                System.out.println("Id=" + rs.getInt("Id"));
                System.out.println("Name=" + rs.getString("Name"));
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

コードのポイント

  • DriverManager.getConnection()でJDBC経由によりMySQLデータベース「web」に接続しています。
  • クエリ文字列の末尾にlimit 1を指定することで、結果セットに含まれるレコードを最大1件に制限しています。
  • rs.next()で結果セットを走査し、getInt()getString()で各カラムの値を取り出しています。

5. 実行結果

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

Id=101
Name=Chris

このように、LIMIT句を活用すれば、大量のデータが存在するテーブルからでも必要な1件だけを効率よく取得できます。特定の条件に合う1件を取得したい場合は、WHERE句と組み合わせてselect * from DemoTable where 条件 limit 1のように記述することも可能です。

  1. JavaでMySQLテーブルに1つのカラムのみを挿入する方法

    JavaとMySQLを連携させる際、テーブルの一部のカラムだけにデータを挿入したいケースはよくあります。その場合は、JDBCのINSERT INTOステートメントを使用します。挿入対象のカラム名を明示的に指定することで、他のカラムには影響を与えずに1つのカラムのみへ値を登録できます。この記事では、実際にテーブルを作成し、Javaのコードから「Name」という1つのカラムだけにデータを挿入する手順を解説します。1. 挿入先のテーブルを作成するまず、MySQLで以下のようにテーブルを作成しておきましょう。ここでは、varchar型の「Name」カラムを1つだけ持つシンプルなテーブルを用意します。m

  2. JavaとMySQLでテーブルから単一の結果(1件のレコード)のみを取得する方法

    JavaからMySQLデータベースに接続し、テーブル内の多数のレコードの中から先頭の1件だけを取得したいケースはよくあります。そのような場合は、SQLのLIMIT句を使用するのが最も簡単で効率的な方法です。この記事では、テーブルの作成からJava側のコード実装まで、手順を追って解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable     -> (     -> Id int,   &