前回はPHP で SQLite を扱う方法をご紹介しました。今回は、 C# で SQLite を扱う方法をご紹介したいと思います。
Visual Studio 2017 を使用します。

Visual Studio での依存ライブラリの管理は NuGet が便利です。NuGet を使って、SQLite に必要なパッケージをインストールします。

パッケージマネージャが開いたら 参照 を選択して “SQLite” と打ち込んで検索し、検索結果から System.Data.SQLite.Core を選択してインストールします。

準備はこれだけです。

コードも簡単です。まずはデータベースファイルを開きます。
ファイル名を指定すればOKです。

using (var conn = new SQLiteConnection("Data Source=C:\\temp\\db.sqlite"))
{
conn.Open();

SQL文は、コマンドを作成して設定します。

using (SQLiteCommand command = conn.CreateCommand())
{
command.CommandText = "SELECT * FROM some_table WHERE id=:id";
// プレースホルダのバインドはこのように
command.Parameters.Add("id", System.Data.DbType.String).Value = "hoge";

結果の1行を、キーをカラム名、値はすべて文字列の Dictionary で取得する場合は、以下のようにできます。

using (var reader = command.ExecuteReader())
{
var schemaTable = reader.GetSchemaTable();

while (reader.Read())
{
var row = new Dictionary<string, string>();

foreach (DataRow schemaRow in schemaTable.Rows)
{
var columnName = schemaRow[schemaTable.Columns["columnName"]].ToString();
row.Add(columnName, reader[columnName].ToString());
}
}
}

環境や構成によっては、”DLL ‘SQLite.Interop.dll’ を読み込めません:指定されたモジュールが見つかりません。 (HRESULT からの例外:0x8007007E)” といったエラーが出る場合があります。
この場合は、<ソリューションのルート>\packages\System.Data.SQLite.Core.<バージョン>\build\<.NETバージョン>\<プロセッサアーキテクチャ> フォルダの下にある SQLite.Interop.dll を実行ファイルがある場所にコピーして置くと動作するかもしれません。
.NETバージョンとプロセッサアーキテクチャは適切なものを選択してください。例えば .NET 4.6 の x86 であれば、build\net46\x86 の中にあるものを使います。

このように簡単に SQLite を使用することができますが、ここでご紹介した機能はごくごく一部です。
System.Data.SQLite についてのより深い情報を知りたい場合は こちらから。