なんじゃくにっき

プログラミングの話題中心。

C# + SQLite 初体験 続き

一昨日書いたものの続き。
らんだむダンジョン 装備シミュレータ を作ったときのソースで
再利用できそうな部分だけメモ。


ADO.NET provider for the SQLiteの使い方:準備
 1.公式サイトのDownLoadsからSQlite.1.x.x.x.binaries.zipをダウンロード、解凍。
2.Visual C#の「ソリューションエクスプローラー」の「参照の追加」で 1で解凍したフォルダのbin内のSystem.data.sqlite.dllを追加。
 3.配布物に含めたいときは「ソリューションエクスプローラー」からSystem.data.sqlite.dllを選択してプロパティのローカルコピーをTrueに。

ADO.NET provider for the SQLiteの使い方:DataAdapter編

 こんな感じ。
 (先にdbを作っておく必要あり。またデザイナ画面で型付datasetも作成の必要あり)

SQLiteConnection con = new SQLiteConnection("Data Source=test.db");
con.Open();
SQLiteDataAdapter da = new SQLiteDataAdapter("SELECT * FROM EMP", con);
dataSet1.Tables["ResultTable"].Clear();
da.Fill(dataSet1.Tables["ResultTable"]);
con.Close();


ADO.NET provider for the SQLiteの使い方:DataReader編
こんな感じ。

SQLiteConnection con = new SQLiteConnection("Data Source=test.db");
con.Open();
SQLiteCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM EMP";
SQLiteDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
//ここに一行ずつの処理を書く
}
con.Close();


●DataGridViewの行ごとの色を変える

 Dataを読み込んだあとこんな感じの関数を呼べばOK。
 列ソートをするとリセットされてしまうのでSortedイベント内でも呼んでやるといいみたい。
 1つ目の項目が"hoge"のとき、行の色を変える。

void ColoringDataGridView(DataGridView datagridview)
{
for (int i = 0; i < datagridview.Rows.Count; i++)
{
if ("hoge" == (string)datagridview.Rows[i].Cells[0].Value)
datagridview.Rows[i].DefaultCellStyle.BackColor = Color.FromArgb(0xFF, 0xCC, 0xCC);
}
datagridview.Update();
}


●DataGridViewの列ごとの色を変える

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
switch (e.ColumnIndex) {
case 0:
case 1:
e.CellStyle.BackColor = Color.FromArgb(0xFF, 0xCC, 0xCC);
break;
case 2:
case 3:
e.CellStyle.BackColor = Color.FromArgb(0xFF, 0xFF, 0xC0);
break;
case 4:
case 5:
e.CellStyle.BackColor = Color.FromArgb(0xCC, 0xFF, 0xCC);
break;
case 6:
case 7:
e.CellStyle.BackColor = Color.FromArgb(0xCC, 0xCC, 0xFF);
break;
}
}

追記:SQLiteでInsert, Delete, Updateを実行するときはTransaction内で行わないと遅くなります。