C#でSQLiteに直接SELECT文を実行してデータを取得する方法をまとめました。
他のDBMSと違って、SQLiteを別途インストールする必要がないのでお手軽に実行できます。
なお、Entity Framework Coreを使って操作する方法については以下の記事を参照してください。
環境
- Windows10 Home
- Visual Studio Community 2019
- .NET Framework 4.8
準備
Visual Studioで新しいプロジェクトを立ち上げます。今回はコンソールアプリで説明します。

C#でSQLiteを使うためにはパッケージの追加が必要になります。
プロジェクトが起動したら、ソリューションエクスプローラーで「参照」を右クリックし、「NuGetパッケージの追加」をクリックします。

「参照」で「sqlite.core」と検索し、出てきた「Microsoft.Data.Sqlite.Core」をインストールしてください。

SQLiteに接続
それではSQLiteに接続して、テーブルの内容を取得してみましょう。
以下のプログラムを実行することで、テーブルの作成・データの挿入・データの取得を1度に行うことができます。
using Microsoft.Data.Sqlite; // 参照の追加
using System;
namespace SqliteApp
{
class Program
{
static void Main(string[] args)
{
// 接続先情報(bin/Debugフォルダ内に「test.sqlite」という名前でDBが作成される)
var connectionString = "Data Source=test.sqlite";
// 接続やSQL実行に必要なインスタンスの生成
using (var connection = new SqliteConnection(connectionString))
using (var command = connection.CreateCommand())
{
// 接続開始
connection.Open();
// usersテーブルの作成
command.CommandText = @"create table users(id int, name varchar(10), age int)";
command.ExecuteNonQuery();
// データの挿入
command.CommandText = @"
INSERT INTO users(id, name, age) VALUES(1, 'Mike', 30);
INSERT INTO users(id, name, age) VALUES(2, 'Lisa', 24);
INSERT INTO users(id, name, age) VALUES(3, 'Taro', 35);";
command.ExecuteNonQuery();
// SELECT文の実行
command.CommandText = "SELECT * FROM users";
using (var reader = command.ExecuteReader())
{
// 1行ずつデータを取得
while (reader.Read())
{
Console.WriteLine($"ID:{reader["id"]} 名前:{reader["name"]} 年齢:{reader["age"]}");
}
}
}
}
}
}
接続文字列でファイル名のみを指定すると、プロジェクト直下のbin/Debugにデータベースファイルが作成されます。
作成される場所を変えたい場合は、ファイル名の前に任意のパスを指定してください。
実行結果
無事コンソール上にテーブル内容が表示されました。
当然ですが2回実行しようとすると既にテーブルが存在します!と怒られるので注意。

エラーが出たら
もし実行時にこのような「ハンドルされていない例外: System.Exception: You need to call SQLitePCL.raw.SetProvider(). If you are using a bundle package, this is done by calling SQLitePCL.Batteries.Init().」が出た場合は…

NuGetパッケージで「SQLitePCLRaw.bundle_e_sqlite3」追加すると解決するはずです。

コメント