記事内に広告が含まれています

【C#】SQLiteに接続して直接SQLを実行する

C#

C#でSQLiteに接続して、直接SQLを実行する方法(ADO.NET)を解説します。

他のDBMSと違って、SQLiteを別途インストールする必要がないのでお手軽に実行できます。

なお、Entity Framework Coreを使ってSQLiteを操作する方法については以下の記事を参照してください。

環境

  • Visual Studio 2022
  • .NET 8

準備

Visual Studioで新しいプロジェクトを立ち上げます。今回はコンソールアプリで説明します。

C#でSQLiteを使うためにはパッケージの追加が必要になります。

プロジェクトが起動したら、ソリューションエクスプローラーのプロジェクト名を右クリックし、「NuGetパッケージの管理」をクリックします。

「参照」の検索バーに「Microsoft.Data.Sqlite」と検索し、表示された「Microsoft.Data.Sqlite.Core」をインストールしてください。

同様の手順で「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 というエラーが出てしまいます。

SQLiteに接続

それではSQLiteに接続して、テーブルの内容を取得してみましょう。

以下のプログラムを実行することで、テーブルの作成・データの挿入・データの取得を1度に行うことができます。

using Microsoft.Data.Sqlite; 

// 接続先情報(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 = "DROP TABLE IF EXISTS users;";
    command.ExecuteNonQuery();

    // 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\netx.0にデータベースファイル(拡張子が.sqlite)が作成されます。

作成される場所を変えたい場合は、ファイル名の前に任意のパスを指定してください。

実行結果

無事コンソール上にテーブル内容が表示されました。

おすすめ書籍

著:金城俊哉
¥2,851 (2024/04/18 13:27時点 | Amazon調べ)
C#
hiranote

コメント

タイトルとURLをコピーしました