こんにちは。「Javaを復習する初心者」です。
今回はH2DataBaseを使ってテーブルから一覧を取得してみました。
H2DataBaseはJavaで作られたデータベースだそうです。ダウンロードしてインストールしました。起動は「すべてのアプリ」メニューに登録された専用のショートカットを使います。ブラウザが起動してデータベースに接続できます。DBの操作はブラウザ上で行うことができます。
インストールしたフォルダにはjarファイルが一つ用意されていて、Java側から接続するときに使います。
今回はH2DataBaseに接続してSELECT文を発行するということを行いました。
テーブルを用意
データベース側には「jdbc:h2:~/test」に接続し、SAMPLE_USERというテーブルを作成しました。「~」は個人のホームディレクトリを表すようです。windowsの場合で「user」というユーザー名の場合、「C:\Users\user」フォルダにtest.mv.dbファイルができていると思います。これがデータベースのファイルです。
以下はテーブルの内容です。
カラム名 | 型 | not null制約 | primary key |
---|---|---|---|
ID | CHAR(10) | あり | ○ |
NAME | VARCHAR(255) | あり | |
AGE | INT | あり |
対応するCREATE文は以下です。
CREATE文
CREATE TABLE SAMPLE_USER (
ID CHAR(10) not null primary key,
NAME VARCHAR(255) not null,
AGE INT not null,
);
上記CREATE文を実行し、以下のINSERT文を実行しました。テーブルに2件のレコードが格納されている状態です。
INSERT文
INSERT INTO SAMPLE_USER (ID, NAME, AGE) VALUES('A000000001', 'サンプル名前1', 20);
INSERT INTO SAMPLE_USER (ID, NAME, AGE) VALUES('A000000002', 'サンプル名前2', 21);
テーブルに接続
データベースに接続し、SQLを発行するプログラムは以下のようになります。
ソース
try (Connection connection = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
PreparedStatement ps = connection.prepareStatement("SELECT * FROM SAMPLE_USER")) {
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
System.out.println(rs.getString("id") + ","
+ rs.getString("name") + ","
+ rs.getString("age"));
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
上記のプログラムはデータベース接続、SELECT文発行、内容出力を行っています。DriverManager.getConnection()メソッドの引数は順番に、接続文字列、ユーザー名、パスワードです。今回はインストールした直後の状態で使っているので、上記のプログラムの通りの引数になります。PreparedStatementクラスのインスタンスを生成し、executeQueryメソッドを使うことでSQLを発行することができます。PreparedStatementクラスを使った場合、SQL中にプレースフォルダ「?」を記述することが可能ですが、今回は使いませんでした。
検索結果を出力するためには、next()メソッドを使った後に、getString()を使います。getString()メソッドは2つあります。今回使ったのは引数にテーブルのカラム名を指定する方です。もう一つのメソッドでは列番号をします。while文を使っていますが、この形が一般的のようです。
以下が実行結果です。
結果
A000000001,サンプル名前1,20
A000000002,サンプル名前2,21
テーブルのレコード全件を取得できています。