遇到一个业务需求,需要定期对SQLite数据库进行数据的批量更新,实现的是将Dictionary中的数据批量添加到数据库,现将代码展示如下。
public void updateDataToDB(Dictionary<string, int> dictionary)
{
using (SQLiteConnection con = new SQLiteConnection(@"data source=bicycle.db"))
{
con.Open();
DbTransaction trans = con.BeginTransaction();//开始事务
SQLiteCommand cmd = new SQLiteCommand(con);
cmd.CommandText = "update table set coun = @a where bikeId = @b";
foreach (KeyValuePair<string, int> kv in dictionary)
{
cmd.Parameters.Add(new SQLiteParameter("@a", DbType.String));//MySql则使用MySqlDbType
cmd.Parameters.Add(new SQLiteParameter("@b", DbType.Int32));
cmd.Parameters["@a"].Value = kv.Key;
cmd.Parameters["@b"].Value = kv.Value;
cmd.ExecuteNonQuery();
}
trans.Commit();//事务提交
}
}
这样就OK了!
之前没有使用批量提交,一次提交的数据会有5分钟的等待时间,用户体验太差;使用批量提交之后每次提交时间为1秒,提高了工作效率,用户体验也得到明显明显改善。