#author("2022-11-06T15:28:44+09:00","","") * NET6.0でSQLiteを使ってみた(Microsoft.Data.Sqlite(使用) [#w6bfb8f4] .NET6.0, C#, コンソールアプリで Microsoft.Data.Sqlite を使って SQLite を操作する環境の構築とサンプルコードを作成してみました。~ Microsoft.Data.Sqliteをインストールして実行すれば動作するだろう!と思って作業をしましたが、以下の例外が発生し、~ 別途、本例外を解消するためのパッケージもインストールします。 System.Exception: 'You need to call SQLitePCL.raw.SetProvider(). If you are using a bundle package, this is done by calling SQLitePCL.Batteries.Init().' * 動作確認環境 [#g361b5f2] - Windows 10 ver.22H2 - Visual Studio 2022 - .NET 6.0 * 参考ページ [#r24c9805] - [[Microsoft.Data.Sqlite 概要>https://learn.microsoft.com/ja-jp/dotnet/standard/data/sqlite/?tabs=netcore-cli]] - [[カスタム SQLite のバージョン>https://learn.microsoft.com/ja-jp/dotnet/standard/data/sqlite/custom-versions?tabs=netcore-cli]] * SQLiteを操作する環境の構築 [#o99eb437] Microsoft.Data.Sqlite を使用するので、「NuGetパッケージの管理」を使用しインストールします。~ ** Microsoft.Data.Sqlite のインストール [#f5e9a0d6] + NuGetパッケージの管理を起動します。 #br #ref(01.png) #br + 「参照」をクリックします。 + ''Microsoft.Data.Sqlite'' と入力して検索します。 #br #ref(02.png) #br + ''Microsoft.Data.Sqlite.Core'' をクリックしインストールします。 #br #ref(03.png) #br +変更のプレビュー画面、ライセンスの同意画面が表示されたら、OKボタン、I Acceptボタンを押してインストールを続行します。 #br #ref(04.png) #br #ref(05.png) #br + インストールが正常に完了すると、出力に「終了」が表示されます。 #br #ref(06.png) #br ** Sqlite のバンドルパッケージのインストール [#a0020085] 本サンプルでは、''SQLitePCLRaw.bundle_e_sqlite3''を利用します。~ これをインストールしないと、以下の例外が発生します。 System.Exception: 'You need to call SQLitePCL.raw.SetProvider(). If you are using a bundle package, this is done by calling SQLitePCL.Batteries.Init().' 他にもバンドルがあります。~ 以下のURLから各バンドルを調べてみてください。 - [[カスタム SQLite のバージョン>https://learn.microsoft.com/ja-jp/dotnet/standard/data/sqlite/custom-versions?tabs=netcore-cli]] ''抜粋'' |バンドル|説明| |SQLitePCLRaw.bundle_e_sqlite3|すべてのプラットフォームで同じバージョンの SQLite を提供します。FTS4、FTS5、JSON1、R*Tree 拡張機能を含みます。 既定値です。| |SQLitePCLRaw.bundle_e_sqlcipher|オープン ソースの非公式の SQLCipher ビルドを提供します。| |SQLitePCLRaw.bundle_green|bundle_e_sqlite3 と同じですが、iOS の場合はシステム SQLite ライブラリが使用されます。| |SQLitePCLRaw.bundle_sqlite3|システム SQLite ライブラリが使用されます。| |SQLitePCLRaw.bundle_winsqlite3|Windows 10 のシステム SQLite ライブラリである winsqlite3.dll が使用されます。| |SQLitePCLRaw.bundle_zetetic|Zetetic の公式の SQLCipher ビルドが使用されます (含まれていません)。| + NuGetを起動します。 + NuGetパッケージの管理を起動します。 #br #ref(01.png) #br + 「参照」をクリックします。 + ''SQLitePCLRaw.bundle_e_sqlite3'' と入力して検索します。 + ''SQLitePCLRaw.bundle_e_sqlite3'' をクリックしインストールします。 #br #ref(11.png) #br +変更のプレビュー画面、ライセンスの同意画面が表示されたら、OKボタンを押してインストールを続行します。 #br #ref(12.png) #br + インストールが正常に完了すると、出力に「終了」が表示されます。 #br #ref(13.png) #br * SQLite操作のサンプルコードと実行結果 [#o6a1f55a] 以下の C# サンプルコードを .NET6.0 コンソールアプリとしてプロジェクトを作成し実行した結果です。 ** サンプルコード [#m619283e] using Microsoft.Data.Sqlite; using (var connection = new SqliteConnection("Data Source=sqlitedb.db")) { connection.Open(); var command = connection.CreateCommand(); command.CommandText = @"CREATE TABLE winos(id INT, name VARCHAR(20))"; command.ExecuteNonQuery(); command.CommandText = @"INSERT INTO winos VALUES(1,'Windows10')"; command.ExecuteNonQuery(); command.CommandText = @"INSERT INTO winos VALUES(2,'Windows11')"; command.ExecuteNonQuery(); command.CommandText = @"SELECT name FROM winos"; using (var reader = command.ExecuteReader()) { while (reader.Read()) { var name = reader.GetString(0); Console.WriteLine($"OSNAME: {name}"); } } } ** 実行例 [#dd4de5d7] 実行したとき、SQLiteのデータベースファイルは実行ファイルと同じ場所に作成されます。~ -ソリューション(プロジェクト)のディレクトリ\bin\Debug\net6.0 再実行する場合は、削除してください。~ テーブル有無チェックをサンプルコードでは実装していなので、「既にテーブルがあります。」と例外が発生します… #ref(21.png) #br 以上、.NET6.0, Microsoft.Data.SQLite を使って SQLite を操作する環境構築とサンプルコードでした。