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)); } //速度相当不错,三几千条数据毫秒级别,相比直接插入速度不知道快多少。
本例有待进一步封装,以便通用。
相关文章推荐
- 使用事务操作SQLite数据批量插入,提高数据批量写入速度,源码讲解
- MySQL循环插入数据存储过程(速度较慢,准备测试数据用)
- Sqlite使用事务插入数据
- sqlite循环批量插入数据
- C# 通过事务向数据库插入多条数据(通过Hashtable存储数据)
- iOS 提升SQLite数据插入效率低、速度慢的方法
- 直接路径插入表/*+append*/ 直接插入数据的速度测试
- 提升SQLite数据插入效率低、速度慢的方法
- C#:30行数据插入到数据库中的效率测试-一行行执行、构造SQL一次执行、SqlBulkCopy
- C#/.Net 中快速批量给SQLite数据库插入测试数据
- sql中循环插入大量测试数据
- [转载]提升SQLite数据插入效率低、速度慢的方法
- 对mysql数据库批量插入数据的速度测试
- SQLite怎么解决插入多条数据速度慢
- 提升SQLite数据插入效率低、速度慢的方法
- C#利用ODP.NET往oracle中高效插入百万数据
- c#批量插入数据到数据库【支持事务操作】
- C#利用ODP.NET往oracle中高效插入百万数据
- C#利用ODP.NET往oracle中高效插入百万数据
- [Php-Mysql]多条数据的循环插入和一次性插入的性能测试