C#操作sqlite
在Nuget管理器中找到System.Data.SQLite
并导入到项目。
定义全局变量 SQLiteConnection m_dbConnection
指定使用的数据库名,变量SQLiteCommand
用来执行相应SQL命令。
如下示例实现了窗体Load事件时的读取数据库相应数值,以及关闭窗体后更新相应数值的操作。
private void Form1_Load(object sender, EventArgs e) { m_dbConnection = new SQLiteConnection("Data Source=uiparams.db;Version=3;"); m_dbConnection.Open(); Dictionary<string, string> uikvs = new Dictionary<string, string>(); string sql = "select * from param "; SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection); SQLiteDataReader reader = command.ExecuteReader(); while (reader.Read()) { uikvs[ (string)reader["keyname"] ] = (string)reader["val"]; } numericUpDown1.Value = Convert.ToDecimal(uikvs["clicktimes"]); numericUpDown2.Value = Convert.ToDecimal(uikvs["clickperiod"]); numericUpDown3.Value = Convert.ToDecimal(uikvs["shotdelay"]); leftUpperX.Text = uikvs["upperleftx"]; leftUpperY.Text = uikvs["upperlefty"]; regionWidth.Text = uikvs["regionwidth"]; regionHeight.Text = uikvs["regionheight"]; m_dbConnection.Close(); }
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { m_dbConnection = new SQLiteConnection("Data Source=uiparams.db;Version=3;"); m_dbConnection.Open(); Dictionary<string, string> uikvs = new Dictionary<string, string>(); string sql = "select * from param "; SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection); SQLiteDataReader reader = command.ExecuteReader(); while (reader.Read()) { uikvs[(string)reader["keyname"]] = (string)reader["val"]; } uikvs["clicktimes"] = numericUpDown1.Value.ToString(); uikvs["clickperiod"] = numericUpDown2.Value.ToString(); uikvs["shotdelay"] = numericUpDown3.Value.ToString(); uikvs["upperleftx"] = leftUpperX.Text; uikvs["upperlefty"] = leftUpperY.Text; uikvs["regionwidth"] = regionWidth.Text; uikvs["regionheight"] = regionHeight.Text; foreach(var it in uikvs.Keys) { sql = String.Format("update param set val = '{0}' where keyname = '{1}'", uikvs[it], it); command = new SQLiteCommand(sql, m_dbConnection); command.ExecuteReader(); } m_dbConnection.Close(); }