• SQLite初试...


                string dataPath = "../../UserData.dbx"; //System.IO.Directory.GetCurrentDirectory() + "\UserData.dbx";
                SQLiteConnection.CreateFile(dataPath);
                SQLiteConnection conn = new SQLiteConnection("Data Source=" + dataPath);
                conn.Open();
    
    
                SQLiteCommand cmd = new SQLiteCommand();
                cmd.CommandText = "create table Users (UserID int primary key,UserName varchar(100) not null,UserPassword varchar(100) not null)";
                cmd.Connection = conn;
                cmd.ExecuteNonQuery();
    
                for (int i = 0; i < 10; i++)
                {
                    cmd.CommandText = "insert into Users (UserID,UserName,UserPassword) values (" + i + ",'TestUser_" + i + "测试','" + DateTime.Now.ToString().Replace(" ", "-").Replace(":", "-") + "')";
                    cmd.ExecuteNonQuery();
                }

     批量插入太慢了····

    找了下别的例子

     internal string FastInsertMany()
        {
          StringBuilder builder = new StringBuilder();
          using (DbTransaction dbTrans = _cnn.BeginTransaction())
          {
            int dtStart;
            int dtEnd;
     
            using (DbCommand cmd = _cnn.CreateCommand())
            {
              cmd.Transaction = dbTrans;
              cmd.CommandText = "INSERT INTO TestCase(Field1) VALUES(@p1)";
              DbParameter Field1 = cmd.CreateParameter();
     
              Field1.ParameterName = "@p1";
              cmd.Parameters.Add(Field1);
     
              //Console.WriteLine(String.Format("          Fast insert using parameters and prepared statement
              -> (100,000 rows) Begins ... "));
              dtStart = Environment.TickCount;
              for (int n = 0; n < 100000; n++)
              {
                Field1.Value = n + 200000;
                cmd.ExecuteNonQuery();
              }
     
              dtEnd = Environment.TickCount;
              dtEnd -= dtStart;
              builder.AppendFormat("Ends in {0} ms ... ", (dtEnd));
            }
     
            dtStart = Environment.TickCount;
            dbTrans.Commit();
            dtEnd = Environment.TickCount;
            dtEnd -= dtStart;
            builder.AppendFormat("Commits in {0} ms", (dtEnd));
          }
          return builder.ToString();
        }

    _cnn.BeginTransaction()--报错了···

    _cnn.BeginTransaction()之前...
    _cnn.Open();就可以了····

     ...上面那个比较麻烦...

    再次寻到一个...帖子地址...http://bbs.csdn.net/topics/350182114

    对于大量的插入操作,可以利用一个空的DataTable加入要插入的行,达到一定数量提交后清空该表就行了,
    实现起来并不算复杂:
    
    DateTime begin = DateTime.Now;
    string connectionString = ......;
    using(SqlConnection conn = new SqlConnection(connectionString))...{
        conn.Open();
        SqlDataAdapter sd = new SqlDataAdapter();
        sd.SelectCommand = new SqlCommand("select devid,data_time,data_value from CurrentTest", conn);
        sd.InsertCommand = new SqlCommand("insert into CurrentTest (devid,data_time,data_value) "
                        + " values (@devid,@data_time,@data_value);", conn);
        sd.InsertCommand.Parameters.Add("@devid", SqlDbType.Char, 18, "devid");
        sd.InsertCommand.Parameters.Add("@data_time", SqlDbType.Char, 19, "data_time");
        sd.InsertCommand.Parameters.Add("@data_value", SqlDbType.Int, 8, "data_value");
        sd.InsertCommand.UpdatedRowSource = UpdateRowSource.None;
        sd.UpdateBatchSize = 0;
    
        DataSet dataset = new DataSet();
        sd.Fill(dataset);
        Random r = new Random(1000);
        for (int i = 0; i < 100000; i++) ...{
            object[] row = ...{"DEVID"+i,DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),r.Next(1,1000) };
            dataset.Tables[0].Rows.Add(row);
            if (i % 300 == 0) ...{
                sd.Update(dataset.Tables[0]);
                dataset.Tables[0].Clear();
            }
        }
        sd.Update(dataset.Tables[0]);
        dataset.Tables[0].Clear();
        sd.Dispose();
        dataset.Dispose();
        conn.Close();
       
    }
    by id “q107770540
  • 相关阅读:
    自动化测试项目实战训练【广州8月】
    RFT基础使用手册
    TestComplete自动化测试实战训练【6月11、12号】
    Jubula Eclipse开源功能测试工具
    网络管理自动化测试应用
    IBM RFT自动化测试实战课程
    GUI自动化测试原理剖析—JAVA测试篇
    简易自动化测试设计之(一) 基于RFT的自动化测试层次
    录制,到底给我们带来了什么?
    IBM Rational Functional Tester(RFT) 自动化测试框架ITCL
  • 原文地址:https://www.cnblogs.com/love-zf/p/5764001.html
Copyright © 2020-2023  润新知