H2 データベースのインストール
<ダウンロード先>
上記のリンクから、下のようなページに遷移できます。
H2DBのダウンロード
そして、赤枠の部分をクリックします。
同様に、赤枠の部分をクリックします。
そうすると、「h2-XXXX-XX-XX.zip」のような名前のファイルがダウンロードできます。
サンプル:「h2-2019-10-14.zip」
h2DBのJARファイルをビルドパスに通す
Eclipseを開きプロパティ -> ライブラリ・タブを開きます
そして、赤枠にある「外部JARファイルの追加」をクリックします。
そこに、h2*.jarというファイルがあるのでそれを追加します。
bat(sh)ファイルを起動する
h2*.jarファイルの隣にある「h2.bat(Windows用)かh2.sh(Mac, Linux用)」のファイルを起動する(ダブルクリック)
「http://localhost:8082」にアクセスするとしたのような画面が見れます。
日本語の表示もできました。そしたら「~/test」と書いてある部分を自分の指定したパスに変更します。現状では、マイドキュメント直下です。
次のようなパスを入力しました。
jdbc:h2:/Users/ユーザー名/Java/jars/h2/db_file
そして「接続」ボタンをクリック少し待つとしたのような画面が見れます。
これで、DBの作成が完了です。
テーブルを作成する
テスト用のテーブルを作成します。
画面にある「SQLステートメントのサンプル」の下の部分をクリックします。
するとSQLが生成されて下のような表示に変わります。
そして、をクリックしますとテストテーブルが作成できます。
実行結果は下のようなものです。
JDBCで接続してみる
Javaプログラムをしたのように作成します。
-
H2Dao.java
public class H2Dao { private final String DB_URI = "jdbc:h2:/Users/takk/Java/jars/h2/db_file/test.mv.db"; private Connection con; public H2Dao() throws SQLException { try { // DriverManager.getConnection(URI , ユーザー名, パスワード(なし)) con = DriverManager.getConnection(DB_URI, "sa", ""); Statement stmt = con.createStatement(); createTables(stmt); ResultSet result = stmt.executeQuery("select * from test;"); while(result.next()) { int id = result.getInt(1); String name = result.getString(2); System.out.println("ID: " + id + " Name: " + name); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); throw e; } } public void createTables(Statement stmt) throws SQLException { String sql = "DROP TABLE IF EXISTS TEST;\n" + "CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255));\n" + "INSERT INTO TEST VALUES(1, 'Hello');\n" + "INSERT INTO TEST VALUES(2, 'World');\n" + "SELECT * FROM TEST ORDER BY ID;\n" + "UPDATE TEST SET NAME='Hi' WHERE ID=1;\n" + "DELETE FROM TEST WHERE ID=2;"; stmt.execute(sql); } public void finalize() { try { con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { con = null; } } }
そして、このクラスを動かします。今回は、JUnitを使用します。
public class H2DaoTest {
@Test
public void testConstractor() {
try {
H2Dao dao = new H2Dao();
} catch (SQLException e) {
fail("エラーになりました");
}
}
}
これで、実行した結果が緑になればOKです。
練習
ここまできたら、上記のコード
にあるSQLを改造してSQLを実行してみましょう。public void createTables(Statement stmt) throws SQLException
ヒント
更新系の処理と検索(データの取得)系の処理では、呼び出すメソッドが違います。
- 更新系:Statement#execute()
- 検索系:Statement#executeQuery()
例
<更新系>
private void execute(String sql) {
try {
Statement stmt = con.createStatement();
stmt.execute(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
<検索系>
private List<String> executeQuery(String sql, boolean isRetuen) {
System.out.println("*** executeQuery ***");
List<String> list = new ArrayList<String>();
try {
Statement stmt = con.createStatement();
ResultSet result = stmt.executeQuery(sql);
ResultSetMetaData meta = result.getMetaData();
int colCount = meta.getColumnCount();
while(result.next()) {
for (int i = 1; i <= colCount; i++) {
System.out.print(i + ": " + result.getString(i) + " ");
}
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
}
if (isRetuen) {
return list;
}
return null;
}
でわでわ。。。