前回は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 についてのより深い情報を知りたい場合は こちらから。