C#で、ファイル形式のデータベースである「SQLite」を使うアプリを作ってみます。
利用するパッケージのインストール
はじめに、必要なパッケージをNuGet経由でインストールします。
System.Data.SQLite.CoreとMicrosoft.Data.SQLite.Coreという似たようなパッケージがありますが、お好きな方を選んでよいと思います。
前者はSQlLiteチームによって開発され、後者はMicrosoftのチームによって保守されています。
一般的に前者の方がパフォーマンスが早いと言われていますが、やりたいことによると思います。
後者はEntityFrameworkなどを使えるので、そこが便利。
今回は前者のSystem.Data.SQLite.Coreを使ってみます。
テーブルのCreate
public static void createTable()
{
using (SQLiteConnection con = new SQLiteConnection("Data Source=" + dbfile))
{
con.Open();
string sql = "create table if not exists sample (id int, code varchar(8), name varchar(20))";
SQLiteCommand com = new SQLiteCommand(sql, con);
com.ExecuteNonQuery();
}
}
レコードのInsert
public static void insertRecord(int id, String code, String name)
{
using (SQLiteConnection con = new SQLiteConnection("Data Source=" + dbfile))
{
con.Open();
using (SQLiteTransaction trans = con.BeginTransaction())
{
SQLiteCommand cmd = con.CreateCommand();
// インサート
cmd.CommandText = "insert into sample (id, code, name) VALUES (@id, @code, @name)";
// パラメータセット
cmd.Parameters.Add("id", System.Data.DbType.Int64);
cmd.Parameters.Add("code", System.Data.DbType.String);
cmd.Parameters.Add("name", System.Data.DbType.String);
// データ追加
cmd.Parameters["id"].Value = id;
cmd.Parameters["code"].Value = code;
cmd.Parameters["name"].Value = name;
cmd.ExecuteNonQuery();
// コミット
trans.Commit();
}
}
}
レコードのselect
public static void selectRecords(String code)
{
using (SQLiteConnection con = new SQLiteConnection("Data Source=" + dbfile))
{
con.Open();
using (SQLiteCommand command = con.CreateCommand()) {
command.CommandText = "select id, code, name from sample where code=:code";
command.Parameters.Add("code", System.Data.DbType.String).Value = code;
using (SQLiteDataReader sdr = command.ExecuteReader())
{
while (sdr.Read() == true)
{
Debug.WriteLine("id=" + (int)sdr["id"] + "; code=" + (string)sdr["code"] + "; name=" + (string)sdr["code"]);
}
}
}
}
}