【H2 DB】C#.NETでh2.dllとIKVM.NETを使用してWindowsFormアプリ開発で利用する方法
H2 DataBase
H2DatabaseEngineのDB環境設定は今回は省きます。
まだH2DBを使ったことないという方は、H2 DataBaseEngineのサイトに飛んで見て下さい。軽量で簡単にDBが構築できるので試しに使ってみるのもいいかもしれませんよ。embeddedモード、serverモード両方利用できるのも特徴ですね。
僕のオススメポイントは、CSVファイルの読みRead書きwriteが簡単にコマンドで操作できるところですね。
H2DB Table
前提として、H2_TESTというDBにH2_TESTというテーブルを作成しておきます。

《Table内容》カラム名:ID,NAME,CREATEDATE
Nuget
WindowsForm開発プロジェクトで「h2」を検索します。

h2をインストールします。
参照
下記の図がh2のNugetをインストールすると、参照されるライブラリになります。

h2 Ver.
H2 DataBase EngineのVer.1.4.200のDBを構築していますが、
現在、Nugetからインストールできる「h2」は、バージョン:1.4.199
と記載されています。
バージョンに相違があっても今回のプログラムでは動きました。

依存関係欄には、「Any,Version」と記載されているので、バージョンが違っても動作しそうですね。
ソースコード
今回の画面の設計は下記の図のように作成しています。

データベースを活用するならDataGridViewにデータを表示する機会は多いと思いますので、今回は、データ表示するようなソースコードを書いてみました。
using java.sql; using System; using System.Data; using System.Windows.Forms; namespace H2_TEST { public partial class Form1 : Form { public Form1() { InitializeComponent(); } /// <summary> /// 画面起動時イベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_Load(object sender, EventArgs e) { // H2ドライバーload org.h2.Driver.load(); // H2DB接続Connect Connection conn = Connect_logic(); // H2DB接続Connect Createtable_logic(conn); // テーブル作成Create Table Insert_logic(conn); // 検索Select Select_logic(conn); // 接続閉じる. conn.close(); } /// <summary> /// 接続ロジック /// </summary> /// <returns></returns> public Connection Connect_logic() { // H2DB接続Connect Connection conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/G:/H2DB/DB/H2_TEST;", "sa", "sa"); return conn; } /// <summary> /// テーブル作成ロジック /// </summary> /// <param name="conn"></param> public void Createtable_logic(Connection conn) { // テーブル作成Create Table PreparedStatement statement = conn.prepareStatement("CREATE TABLE IF NOT EXISTS TEST_INFO(id INT auto_increment, NAME varchar2(200), CREATEDATE timestamp);"); statement.execute(); } /// <summary> /// レコード登録ロジック /// </summary> public void Insert_logic(Connection conn) { // 現在時刻取得 string dateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // 登録Insert PreparedStatement statement2 = conn.prepareStatement("INSERT INTO TEST_INFO(NAME, CREATEDATE) VALUES('EXTRA-LAB', '" + dateTime + "');"); statement2.execute(); } /// <summary> /// 検索&結果ロジック /// </summary> public void Select_logic(Connection conn) { // テキスト欄をクリア richTextBox1.Clear(); // 検索Select PreparedStatement statement3 = conn.prepareStatement("SELECT * FROM TEST_INFO;"); ResultSet set = statement3.executeQuery(); // 結果データをDataGridに表示する DataSet ds = new DataSet(); DataTable dt = new DataTable { TableName = "TEST_INFO", }; // 3列定義します。 dt.Columns.Add().ColumnName = "ID"; dt.Columns.Add().ColumnName = "NAME"; dt.Columns.Add().ColumnName = "CREATEDATE"; // DataSetにdtを追加します。 ds.Tables.Add(dt); // 全件数分繰り返し while (set.next()) { DataRow row = ds.Tables[0].NewRow(); row[0] = set.getInt(1); row[1] = set.getNString(2); row[2] = set.getNString(3); ds.Tables[0].Rows.Add(row); // 文字列連結 string result = "ID:" + set.getInt(1) + " NAME:" + set.getNString(2) + " CREATEDATE:" + set.getNString(3) + "\n"; // テキストボックスに表示する場合 richTextBox1.AppendText(result); } //グリッドビューにデータ表示 dataGridView1.DataSource = ds.Tables[0]; } /// <summary> /// テーブル作成ボタン /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { // H2DB接続Connect Connection conn = Connect_logic(); //テーブル作成ロジック実行 Createtable_logic(conn); } /// <summary> /// レコード登録ボタン /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { // H2DB接続Connect Connection conn = Connect_logic(); //レコード登録ロジック実行 Insert_logic(conn); } /// <summary> /// 結果表示ボタン /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button3_Click(object sender, EventArgs e) { // H2DB接続Connect Connection conn = Connect_logic(); // 検索&結果表示ロジック実行 Select_logic(conn); } } }
結果
アプリ実行結果が下記の図のようになります。

C#.NETでH2 Database Engineを操作できるようになりました。
これで、H2Databaseの活用方法が広がったと思います。
色々とシステム開発に役に立つのではないのでしょうか。
では。(@^^)/~~~