JavaのJDBCでStatementを使ってSELECT文を実行する方法を徹底解説!初心者向けデータベース接続入門
生徒
「Javaでデータベースからデータを取得するにはどうすればいいですか?JDBCとかStatementってよく聞くのですが難しそうです。」
先生
「JavaではJDBCを使うことで、MySQLやPostgreSQLなどのデータベースに接続できます。そしてStatementを使えば、SELECT文を実行してデータを取得できます。」
生徒
「SELECT文って、データを検索するSQLですよね?Javaのコードでどう書くのか知りたいです。」
先生
「では、JDBCの基本から、Statementを使ったSELECT文の実行方法まで順番に解説していきましょう。」
1. JDBCとは何か?Javaでデータベース接続する基本
JDBCは、Java Database Connectivityの略で、Javaからデータベースに接続するための標準APIです。JavaアプリケーションからMySQLやPostgreSQL、OracleなどのデータベースへSQLを発行できます。
Javaでデータベース接続を行う場合、主に次の流れになります。
- ドライバの読み込み
- Connectionの取得
- Statementの作成
- SQLの実行
- ResultSetで結果取得
- リソースのクローズ
この一連の流れを理解することが、JDBC入門の第一歩です。特に初心者がつまずきやすいのは、StatementとPreparedStatementの違いですが、今回は基本となるStatementを使ったSELECT文の実行方法に集中します。
2. Statementとは?SELECT文を実行するための基本クラス
Statementは、SQL文をデータベースへ送信するためのインターフェースです。Javaのjava.sqlパッケージに含まれています。
Statementを使うと、次のようなSQLを実行できます。
- SELECT文でデータ取得
- INSERT文でデータ追加
- UPDATE文でデータ更新
- DELETE文でデータ削除
SELECT文を実行する場合は、executeQueryメソッドを使用します。戻り値はResultSetで、ここから検索結果を1件ずつ取り出します。
3. JDBCでStatementを使ってSELECT文を実行する基本コード
ここでは、MySQLデータベースに接続し、usersテーブルから全件取得するサンプルコードを紹介します。Java初心者でも理解できるように、シンプルな構成にしています。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcSelectSample {
public static void main(String[] args) {
try {
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/sampledb",
"root",
"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();
} catch (Exception e) {
e.printStackTrace();
}
}
}
このコードでは、DriverManagerを使ってデータベース接続を行い、createStatementでStatementを作成し、executeQueryでSELECT文を実行しています。
4. ResultSetでSELECT結果を取得する方法
SELECT文を実行すると、結果はResultSetに格納されます。ResultSetは、検索結果を1行ずつ読み込むためのオブジェクトです。
主なポイントは次の通りです。
- nextメソッドで次の行へ移動
- getIntやgetStringでカラム値取得
- カラム名またはインデックス指定が可能
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
System.out.println("ID=" + id + ", NAME=" + name);
}
nextは、次のレコードが存在する場合にtrueを返します。これを利用してループ処理を行います。Javaでデータベース検索結果を扱う基本パターンなので、必ず覚えておきましょう。
5. WHERE句付きSELECT文をStatementで実行する例
次は、WHERE句を使ったSELECT文の例です。特定のidを検索するパターンです。
Statement stmt = conn.createStatement();
String sql = "SELECT id, name FROM users WHERE id = 1";
ResultSet rs = stmt.executeQuery(sql);
if (rs.next()) {
System.out.println(rs.getString("name"));
}
このように、文字列としてSQLを組み立ててexecuteQueryへ渡します。ただし、ユーザー入力をそのまま連結するとSQLインジェクションの危険があります。実務ではPreparedStatementの利用が推奨されますが、JDBCの基礎理解としてStatementの動きを押さえておくことが重要です。
6. リソースを確実にクローズする重要性
JDBCでは、Connection、Statement、ResultSetを必ずcloseする必要があります。クローズしないと、メモリリークや接続数オーバーの原因になります。
try {
// データベース処理
} finally {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
}
最近のJavaではtry-with-resources構文もよく使われます。JDBC初心者の方は、まずはcloseの重要性を理解してから応用に進むと理解が深まります。
7. JDBCとStatementを学ぶメリットと次のステップ
Javaでデータベース接続を行うスキルは、Webアプリケーション開発や業務システム開発で必須です。JDBCとStatementを理解することで、SQLとJavaの連携が明確になります。
本記事で解説したポイントは次の通りです。
- JDBCの基本的な仕組み
- Statementの役割
- SELECT文の実行方法
- ResultSetでのデータ取得
- リソース管理の重要性
今後はPreparedStatementやトランザクション管理、接続プールなども学ぶと、より実践的なJavaデータベースプログラミングが身につきます。Java初心者の方は、まずは今回のStatementを使ったSELECT文の実行を何度も練習して、JDBCの基本を確実に理解していきましょう。
まとめ
本記事では、JavaでJDBCを利用し、Statementを使ってSELECT文を実行する方法について、基礎から丁寧に解説しました。Javaデータベース接続の流れとして、ドライバの読み込み、Connectionの取得、Statementの生成、SELECT文の実行、ResultSetによる結果取得、そしてリソースのクローズまで、一連の処理を体系的に理解することが重要です。
JDBCはJavaアプリケーションとデータベースをつなぐ標準的なAPIであり、MySQLやPostgreSQLなどのデータベース操作を行う上で欠かせない技術です。特にStatementは、SQL文を直接データベースへ送信するための基本インターフェースであり、SELECT文を実行するexecuteQueryメソッドの使い方は、Java初心者が最初に身につけるべき重要なポイントです。
SELECT文の実行後はResultSetを用いて検索結果を一件ずつ取り出します。nextメソッドで行を移動し、getIntやgetStringでカラム値を取得する処理は、Javaデータベースプログラミングの基本パターンです。この繰り返し構造を正しく理解することで、検索結果の一覧表示や条件検索など、実務でよく使われる処理に応用できます。
また、Connection、Statement、ResultSetを確実にcloseすることは、安定したシステム運用のために欠かせません。リソース管理を怠ると、接続数超過やメモリ不足といった深刻な問題につながります。JavaでJDBCを扱う際は、必ずリソースクローズを徹底する習慣を身につけましょう。
SELECT文実行の復習サンプル
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcSummarySample {
public static void main(String[] args) {
try {
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/sampledb",
"root",
"password"
);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, name FROM users");
while (rs.next()) {
System.out.println(
rs.getInt("id") + " : " + rs.getString("name")
);
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
上記のコードは、JavaでJDBCを使用してStatementからSELECT文を実行し、ResultSetでデータを取得する一連の流れをまとめたものです。Javaデータベース接続入門として、まずはこの形を確実に再現できるように練習することが理解への近道です。
生徒
JavaでJDBCを使うと、データベース接続からSELECT文の実行まで一通りできることが分かりました。StatementはSQLを送るための基本クラスなのですね。
先生
その通りです。Javaデータベース接続では、Connectionで接続し、StatementでSELECT文を実行し、ResultSetで結果を取得する流れが基本です。この流れを理解することが重要です。
生徒
ResultSetのnextで一行ずつ取得する処理が繰り返し使われるのも理解できました。Javaでデータベース検索結果を扱う基本形なのですね。
先生
はい。JDBCとStatementを正しく使えるようになれば、Webアプリケーション開発や業務システム開発でも応用できます。まずはSELECT文の実行を確実に身につけましょう。