【SQLite】windowsFormsでSQLiteを使用してデータベース活用アプリを開発
NuGetパッケージ
まずは、SQLiteを使用するためNugetパッケージの管理から「SQLite」と検索して、
「System.Data.SQLite.Core」をインストールしよう。


インストールし終わったら、プロジェクトフォルダ配下に「packages」フォルダが作成されて、
その中にNuGetでインストールされたパッケージが入る。
画面設計
今回は、下記の図の通り、画面を作成してみました。

Database作成&テーブル作成&データ登録&データ取得
早速、ソースコードを載せます。
データベース作成、テーブル作成、データ登録、データ取得できるアプリを作成しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
using System; using System.Data; using System.Data.SQLite; using System.Windows.Forms; namespace SQLite_Database { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //DB作成 private SQLiteConnection conn = new SQLiteConnection("Data Source = SQLite.db"); // 「●●.db」でデータベースファイルが作成される. 実行ファイルと同じフォルダ内に生成。 //private SQLiteConnection conn = new SQLiteConnection(@"Data Source = C:\work\SQLite.db"); // 「●●.db」でデータベースファイルが作成される. 絶対パスで置き場所指定もできる。 /// <summary> /// ボタンクリックイベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button1_Click(object sender, EventArgs e) { try { //DBを開く conn.Open(); //SQL文作成 SQLiteCommand command = conn.CreateCommand(); //SQL文作成 テーブル作成 書き方は様々 //command.CommandText = "create table IF NOT EXISTS TEST (id, name, remarks)"; //全て文字列型で設定される. command.CommandText = "create table IF NOT EXISTS TEST (id integer PRIMARY KEY AUTOINCREMENT, name, remarks)"; //id カラム列をプライマリーキーに設定. //command.CommandText = "create table IF NOT EXISTS TEST (id integer PRIMARY KEY AUTOINCREMENT, name varchar(30), remarks varchar(200))"; //各カラムの型を設定しバイト容量を設定. //クエリ実行 command.ExecuteNonQuery(); textBox1.Text = "DB作成&テーブル作成完了."; } catch (Exception ex) { //エラーをテキストボックスに表示 textBox1.Text = ex.Message; } finally { //DB閉じる conn.Close(); } } /// <summary> /// レコード追加ボタンクリックイベント Insert文 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button2_Click(object sender, EventArgs e) { //データを用意 string name1 = "AAA"; string name2 = "BBB"; string name3 = "CCC"; string remarks1 = "hogehoge1"; string remarks2 = "hogehoge2"; string remarks3 = "hogehoge3"; try { //DBを開く conn.Open(); //SQL文作成 SQLiteCommand command = conn.CreateCommand(); //SQL文作成 テーブル作成 command.CommandText = "insert into TEST (name, remarks) values('" + name1 + "', '" + remarks1 + "')"; //クエリ実行 command.ExecuteNonQuery(); //SQL文作成 テーブル作成 command.CommandText = "insert into TEST (name, remarks) values('" + name2 + "', '" + remarks2 + "')"; //クエリ実行 command.ExecuteNonQuery(); //SQL文作成 テーブル作成 command.CommandText = "insert into TEST (name, remarks) values('" + name3 + "', '" + remarks3 + "')"; //クエリ実行 command.ExecuteNonQuery(); //結果表示 textBox2.Text = "データ登録完了."; } catch (Exception ex) { //エラーをテキストボックスに表示 textBox2.Text = ex.Message; } finally { //DB閉じる conn.Close(); } } /// <summary> /// データ取得ボタンクリックイベント SELECT文 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button3_Click(object sender, EventArgs e) { try { //DBを開く conn.Open(); //SQL文作成 SQLiteCommand command = conn.CreateCommand(); //SQL文作成 テーブル作成 command.CommandText = "select * from TEST"; //クエリ実行 //◆データを1レコードずつ取得していく場合 SQLiteDataReader reader = command.ExecuteReader(); while (reader.Read()) { richTextBox1.Text += reader[0].ToString() + reader[1].ToString() + reader[2].ToString(); //引数index番号は、カラム順 [0]:id [1]:name [2]:remarks } //◆データを一括で取得してDataGridViewに表示する場合 SQLiteDataAdapter adapter = new SQLiteDataAdapter("select * from TEST", conn); DataSet Ds = new DataSet(); //データセットインスタンス作成 DataTable dt = new DataTable(); //データテーブルインスタンス作成 adapter.Fill(dt); //データテーブルに代入 Ds.Tables.Add(dt); //データセットに追加 dataGridView1.DataSource = Ds.Tables[0]; //グリッドビューにデータ表示 //結果表示 textBox3.Text = "データ取得完了."; } catch (Exception ex) { //エラーをテキストボックスに表示 textBox3.Text = ex.Message; } finally { //DB閉じる conn.Close(); } } } } |
実行結果表示
ビルドして実行すると、下記のような結果が表示される。

カレントフォルダにDB作成
DBは、カレントディレクトリーに生成される。

DB置き場所指定
DBの置き場所を指定したい場合は、絶対パスで指定してあげればいい。
1 |
SQLiteConnection conn = new SQLiteConnection(@"Data Source = C:\work\SQLite.db"); |
まとめ
SQLiteは、簡単にデータベース構築できる。Androidアプリにもよく用いられている。
クライアントサーバーアプリケーションには使えない。。スタンドアロン向け(組み込み等)です。
他のOracleDB,H2DB,PostgresQLなどのDBも同じ要領で実装できるので、試してみては。