您的位置:首页 > 数据库

C#sqlite事务循环高效插入数据,天下文章一大抄,本例亲自测试过,速度嘎嘎的。

2013-07-27 22:13 573 查看
string n = string.Empty;
string i = string.Empty;
string d = string.Empty;
DateTime cd;
SQLiteConnection conn = new SQLiteConnection(SQLiteHelper.ConnectionString);
SQLiteCommand commd = new SQLiteCommand(conn);
conn.Open();
SQLiteTransaction tran = conn.BeginTransaction();
commd.Transaction = tran;
commd.Parameters.Clear();
commd.CommandType = CommandType.Text;
try
{
wt = new Stopwatch();
wt.Reset();
wt.Start();
cmdtext = "REPLACE INTO  XXX (name,i,CBdate,crdate) values(@db,@i,@cbdate,@crdate)";
commd.CommandText = cmdtext;
for (int i = 0; i < t; i++)
{
n = Convert.ToString(gv.GetRowCellValue(i, "name"));
i = Convert.ToString(gv.GetRowCellValue(i, "i"));
d = Convert.ToString(gv.GetRowCellValue(i, "cbdate"));
cd = Convert.ToDateTime(gv.GetRowCellValue(i, "crdate"));
SQLiteParameter[] p = new SQLiteParameter[] { new SQLiteParameter("@db", n), new SQLiteParameter("@i", ip),
new SQLiteParameter("@cbdate",d), new SQLiteParameter("@crdate",cd)};

if (p != null && p.Length > 0)
{
commd.Parameters.AddRange(p);
}
commd.ExecuteNonQuery();
}
}
tran.Commit();
}

catch (Exception err)
{
tran.Rollback();
ComMsg.MsgErr(err.Message);
throw new Exception(err.Message);
}
finally
{
conn.Close();
ComMsg.MsgOk(string.Format("操作结束,耗时{0}毫秒", wt.ElapsedMilliseconds));
}

//速度相当不错,三几千条数据毫秒级别,相比直接插入速度不知道快多少。


本例有待进一步封装,以便通用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: