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が立ち上がったら
を選択し管理画面を開きます。
検索窓へ「SQLite」を入力し、参照タブへ移動します。
すると多数の検索結果が表示されますが、今回は必要最低限の機能のみ使用しますので、
をインストールしてください。
プログラムでデータ抽出
パッケージのインストールが完了したら、実際にデータを取得してみます。
以下のコードを実行すると、作成したデータベースファイルへ接続し、データが抽出されます。
//データベースのファイルパスを指定
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
最後に
データベースの作成~コーディングの実装まで比較的簡単に行えました。
まだまだ使っていない機能もたくさんありますので、今後も勉強しながら使っていこうと思います。