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

                            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)); }

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

     本例有待进一步封装,以便通用。

  • 相关阅读:
    mvc:resources配置说明
    MySQL 表与索引损坏修复
    ORACLE 日志损坏 使用"_ALLOW_RESETLOGS_CORRUPTION"进行崩溃恢复
    Oracle 回滚段坏快并恢复
    Oracle 坏快处理:Undo 与 datafile
    Oracle备份恢复-控制文件损坏的各种场景恢复专题
    Oracle备份恢复-redo文件损坏的各种场景恢复专题
    Oracle 数据库坏块处理技术
    PostgreSQL 坏快分类与修复策略
    Linux RAID卡优化
  • 原文地址:https://www.cnblogs.com/bantongshui/p/3220379.html
Copyright © 2011-2022 走看看