全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1959
推到 Plurk!
推到 Facebook!

新增資料到Access的速度很慢

答題得分者是:harpist
crop
一般會員


發表:33
回覆:9
積分:8
註冊:2004-07-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-12 19:56:40 IP:140.122.xxx.xxx 訂閱
<textarea class="cpp" rows="10" cols="60" name="code"> for(int i=0; iItems->Count; i ) { ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("Insert into T values ('" X->Items->Strings[i] "', '" Y->Items->Strings[i] "'," String(Tm->Items->Strings[i].ToInt()) ", '" TRE->Items->Strings[i] "','" OK->Items->Strings[i] "', '" LClick->Items->Strings[i] "')"); ADOQuery1->ExecSQL(); } </textarea> 大家好.. X,Y,Tm,TRE,OK,LClick都是TListBox 而且裡面都有4000筆以上的資料... 但...寫入資料庫(Access)的速度很慢(需要10秒以上) 請問該怎麼做...才能加快寫入資料庫的速度呢?? 謝謝~~~
harpist
資深會員


發表:3
回覆:251
積分:430
註冊:2002-10-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-12 23:54:29 IP:59.104.xxx.xxx 未訂閱
我想用 ADO 速度大概就這個樣子,提升也有限。
你可以考慮用 DAO 元件 Diamond Access 不過不是免費的

以下同樣的條件在我的平台得到的數據是如下
TADOQuery 約 20秒
TDAOQuery 約 10秒

<textarea class="cpp" rows="10" cols="60" name="code"> //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { ADOQuery1->Close(); DWORD t = GetTickCount(); for(int i=0;i<4000;i ) { ADOQuery1->SQL->Text = "insert into test values(\'" IntToStr(i) "\')"; ADOQuery1->ExecSQL(); } t = GetTickCount()-t; ShowMessage(AnsiString(t)); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { DAOQuery1->Close(); DWORD t = GetTickCount(); for(int i=0;i<4000;i ) { DAOQuery1->SQL->Text = "insert into test values(\'" IntToStr(i) "\')"; DAOQuery1->Execute(0); } t = GetTickCount()-t; ShowMessage(AnsiString(t)); } //--------------------------------------------------------------------------- </textarea>
------
~§~迷時師渡,悟了自渡~§~
系統時間:2024-04-19 9:17:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!