酔った状態で適当にやったら動いたんだけどね、次の日になったらなんと何も覚えてないの。
なんとか簡単な手順だけでも記録しておかねば・・・。
H2 DatabaseはJavaで動くDatabaseであり、気軽に使用できるDBとしては最適です。
自分もテストで作成してみましたが、わずか1時間程度でJavaから情報を引き出すことができました。
1.まずはJava(JDK)のインストール
これJDKインストールしなくても、JAVA_HOMEでJavaへのパスが通っていればいい気がします。
自分の場合はpleiadesをインストール済みなので、pleiades内のJavaにパスを通しています。
C:\pleiades\2022-03\java\17
JAVA_HOMEの内容はこんな感じで。
2.H2 Databaseのインストール
H2 Database Engine
ここからWindowsインストーラーをダウンロードしてインストールします。
3.スタートメニューからH2 Consoleを起動して新たにデータベースを作成する
とりあえずC:\temp\db2\testにDBを作るとします。
ユーザー名sa、パスワードは空でログインする。
で、ここで存在しないDBがある場合、新規に作られるはずだが、エラーになってしまうことがある。自分はエラーになった。
その場合はタスクアイコンにあるH2アイコンから先に新規DBを作る必要がある。右クリック→Create a New Database→Database path「C:\temp\db2\test」としてパスワードは適当に設定する。
4.テーブルを作成する
SQL文を入力して、実行ボタンを押す。
以下のSQL文でテーブルを作成する。IDと名前を持つテーブルである。
CREATE TABLE BEER( ID INT PRIMARY KEY, NAME VARCHAR(100) NOT NULL );
5.テーブルにデータを入力する
INSERT INTO BEER (ID, NAME) VALUES (1, 'SUPERDRY');
INSERT INTO BEER (ID, NAME) VALUES (2, 'YEBISU');
セットした値を確認したいときは以下。
SELECT * FROM BEER;
6.JDBCドライバをダウンロードする
https://www.h2database.com/html/download.html
ここのMaven (Binary JAR, Javadoc, and Source)のBinary JARをダウンロードします。ここではC:\tempに配置することとします。h2-2.1.214.jar。
7.EclipseにJDBCドライバを追加する
プロジェクトを右クリック→[プロパティー]→[Javaのビルド・パス]→[ライブラリー]→クラスパスに外部JARの追加でC:\temp\h2-2.1.214.jarを追加する。
8.Javaのコードを書く
パスワードはsaとしていますが、
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; : String JDBC_URL2="jdbc:h2:file:C:\\temp\\db2\\test"; try { Connection conn = DriverManager.getConnection(JDBC_URL2, "sa", "sa"); String sql = "SELECT ID, NAME FROM BEER"; PreparedStatement pStmt = conn.prepareStatement(sql); ResultSet rs = pStmt.executeQuery(); while(rs.next()) { String id = rs.getString("ID"); String name = rs.getString("NAME"); System.out.println("ID=" + id); System.out.println("NAME=" + name); } } catch (SQLException sqlex) { System.out.println(sqlex); }
9.Javaコードを実行する
javaファイルを右クリック→[実行]→[Javaアプリケーション]
トラブルシューティング
他の接続をすべて閉じてください的なことを言われたときは、タスクアイコンにあるH2 Database Engineを終了させるといいかもしれません。