1. 程式人生 > >c# Sqlite批量新增資料

c# Sqlite批量新增資料

今天遇到了往Sqlite資料庫裡插入1400多條資料的情況,結果每次都需要一兩分鐘才能完成.
搜尋了一下,在這裡找到了解決辦法,所需要的時間直接變成不到2秒!

internalstaticvoid FastInsertMany(DbConnection cnn)

{

using (DbTransaction dbTrans = cnn.BeginTransaction())

{

using (DbCommand cmd = cnn.CreateCommand())

{

    try

   {

cmd.CommandText = "INSERT INTO TestCase(MyValue) VALUES(?)"

;

DbParameter Field1 = cmd.CreateParameter();

cmd.Parameters.Add(Field1);

for (int n = 0; n < 100000; n++)

{

Field1.Value = n + 100000;

cmd.ExecuteNonQuery();

}

}

  dbTrans.Commit();

   }

   catch

   {

     dbTrans.RollBack();

   }

}

}

原來花兩分鐘是由於ExecuteNonQuery方法執行時自己提交了更新事務,預設執行更新操作是會自動提交事務的,也就是說預設情況下一條SQL語句就是一個事務,如果不明白可以去看事務的隔離級別。

更改後的程式碼把所有的更新SQL放在一個事務中,只有執行到Commit方法時才提交事務。

與資料庫通訊的內容兩次完成的,但舊的方法進行了100000次通訊,而新方法只進行一次通訊

時間當然有差別了……