2015年5月5日 星期二

C# SQLite 在寫入資料時如何加快的方法 - 批次處理SQLite 寫入的指令 DbTransaction

SQLite 大家最知道的缺點就是寫入效率太差,但有一個批次處裡的功能可以稍微加快這方面
            效率的問題。
            筆者在處理18000筆資料寫入上傳統做法要10分左右 但使用該方法只需要2秒鐘左右



//-以下為批次處理SQLite語法
            sqlite_conn = new SQLiteConnection(ConfigurationManager.ConnectionStrings["sqlite"].ToString());//取得sqlite位置
            sqlite_conn.Open();//--------------打開資料庫
            sqlite_cmd = sqlite_conn.CreateCommand();//--啟動資料庫指令

           List<string> TempResult = new List<string>;
           trans.add("1");//---加入兩筆資料
           trans.add("2");
         

            //--批次交易處理方法
            DbTransaction trans = sqlite_conn.BeginTransaction();

            try
            {
                for (int i = 0; i < TempResult.Count; i++)//---裡面有兩筆資料
                {
                    sqlite_cmd.CommandText = "INSERT INTO QryStock (SQL) VALUES (" + TempResult[i] +")";
                    sqlite_cmd.ExecuteNonQuery();//----執行
                }


                trans.Commit(); // <-------------------批次執行上述的SQL指令

            }
            catch (Exception ex)
            {
                trans.Rollback(); // <-------------------如果有發生錯誤會中斷
                throw; // <-------------------

            }
           
           
           
            sqlite_conn.Close();

沒有留言:

張貼留言