.NET で SQLite を使ってみます。
とりあえずデータの Select コードはこちら
クライアントマシンで動作するアプリでは、アプリのバージョンアップに伴うデータベースの変更という面倒ごとが存在ます。
いろいろな方法が考えられますが、実際の定義を見て判断ができるとなれば心強いでしょう。
テーブルの定義を取得する
PRAGMA TABLE_INFO ('saitama')
こんな感じです。saitama がテーブル名ですね。
// テーブルの情報を取得する command.CommandText = "PRAGMA TABLE_INFO ('saitama')"; using (var reader = command.ExecuteReader()) { var dt = new DataTable(); dt.Load(reader); // 結果を表示 foreach (var row in dt.AsEnumerable()) { foreach (DataColumn col in dt.Columns) Console.Write($"{col.ColumnName}:{row[col.ColumnName]} "); Console.WriteLine(); } }
実行するとこんな感じです。
cid:0 name:no type:INTEGER notnull:1 dflt_value: pk:1 cid:1 name:name type:TEXT notnull:1 dflt_value: pk:0
※ 前述のコードは一部抜粋なので、前述のコードだけでは実行できません。
動作する全体のコード
using Microsoft.Data.Sqlite; using System; using System.Data; using System.Linq; using (var connection = new SqliteConnection("Data Source=database.db")) { connection.Open(); var command = connection.CreateCommand(); // テーブルを作成する command.CommandText = "CREATE TABLE IF NOT EXISTS saitama ( no INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL);"; command.ExecuteNonQuery(); // テーブルの情報を取得する command.CommandText = "PRAGMA TABLE_INFO ('saitama')"; using (var reader = command.ExecuteReader()) { var dt = new DataTable(); dt.Load(reader); // 結果を表示 foreach (var row in dt.AsEnumerable()) { foreach (DataColumn col in dt.Columns) Console.Write($"{col.ColumnName}:{row[col.ColumnName]} "); Console.WriteLine(); } } }
簡単ですね。
今回の SQLite 記事に関連する記事のまとめ
データベース作って、テーブル作って、テーブル定義を読んで、データを Insert して、データを Select する記事です。