技術情報

C# でSQLiteにアクセスする処理を実装

この記事は約5分で読めます。

C#でSQLite3を使ってみたのでまとめてみました。

SQLiteをインストール

SQLiteをコマンドから使用するためのコマンドラインツールのダウンロードとインストールを行います。

コマンドラインツールはプログラムの開発時には必要ありません。
先にデータベースやテーブルを作成しておく場合はインストールしてください。

まずはじめに公式ページにアクセスします。

ページが表示されたら、画面上部の「Download」をクリックし、ダウンロードページに移動します。

今回はWindows10(64bit)の環境で利用しますので、ダウンロードページが表示されたら「Precompiled Binaries for Windows」まで移動し、「sqlite-tools」をダウンロードします。

ダウンロードしたファイルを任意のフォルダに解凍すればインストールは完了です。
※コマンドラインツールなので、必要であればパスを通してください。

コマンドラインツールでデータベース作成

コマンドプロンプトを起動し、先ほどインストールしたコマンドラインツールを使用してデータベースを作成します。
※「データベース名=ファイル名」となります。どのような拡張子でもよさそうですが、.dbや.sqlite3などをつけておくとわかりやすいと思います。

> sqlite3 データベース名

データベース名を指定してコマンドラインツールを実行すると、データベースが存在する場合は指定した名前のデータベースに接続し、指定した名前のデータベースが存在しない場合には新規にデータベースを作成した上で接続します。

新規作成の場合、この時点ではデータベースファイルは作成されず、初めてテーブルを作成した際に作成されます。

コマンドラインツールでテーブル作成

次にテーブルを作成してみます。(データベースに接続されている場合は、プロンプトに「sqlite>」という表示となっています。)
CREATE TABLEでテーブルが作成されますので、次のように実行してください。

CREATE TABLE テーブル名(カラム1, カラム2, ...);

最後に「;(セミコロン)」が無いとSQL文が発行されないようです。
入力忘れた場合は次の行で(セミコロン)とEnterを入力してください。

以上でテーブルまで作成されました。
終了する場合は、「.exit」コマンドを入力してください。

sqlite> .exit

テーブルまで作成すると、データベース名のファイルが作成されていると思います。

システム開発では作成されたファイルへ接続して処理を行いますので、データベースファイルはシステムでアクセスしやすいフォルダへ保管してください。

C#によるデータベースアクセス

つぎに、C#によるデータアクセスのためのデータベースを準備します。

コマンドラインツールで以下コマンドを実行しデータベースファイルを作成します。

>sqlite3 sample.sqlite3
SQLite version x.xx.x xxxx-xx-xx xx:xx:xx
Enter ".help" for usage hints.
CREATE TABLE t_sample(id, data);

そのままデータもINSERTで追加して接続を終了します。

INSERT INTO t_sample (id, data) VALUES (1, 'data01');
INSERT INTO t_sample (id, data) VALUES (2, 'data02');
INSERT INTO t_sample (id, data) VALUES (3, 'data03');
sqlite> .exit

パッケージのインストール

C#でSQLiteを操作するためにパッケージをインストールします。
導入するソリューションを作成するか、既存のソリューションを開いてください。

VisualStudioが立ち上がったら

「ツール」→「NuGetパッケージマネージャー」→「ソリューションのNuGetパッケージの管理」

を選択し管理画面を開きます。

検索窓へ「SQLite」を入力し、参照タブへ移動します。
すると多数の検索結果が表示されますが、今回は必要最低限の機能のみ使用しますので、

「System.Data.SQLite.Core」

をインストールしてください。

プログラムでデータ抽出

パッケージのインストールが完了したら、実際にデータを取得してみます。
以下のコードを実行すると、作成したデータベースファイルへ接続し、データが抽出されます。

//データベースのファイルパスを指定
var constr =new SQLiteConnectionStringBuilder {DataSource = "sample.sqlite3" };
using (var cn = new SQLiteConnection(constr.ToString()))
{
    //データベースへ接続
    cn.Open();
    cmd = new SQLiteCommand(cn))
    {
        //データ抽出
        cmd.CommandText = $"SELECT * FROM  t_sample";
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                Console.WriteLine(reader.GetValues().Get("data"));
            }
        }
    }
}
//実行結果
//data01
//data02
//data03

最後に

データベースの作成~コーディングの実装まで比較的簡単に行えました。
まだまだ使っていない機能もたくさんありますので、今後も勉強しながら使っていこうと思います。

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