ADO的初始化问题 |
尚未結案
|
mchakuna
一般會員 ![]() ![]() 發表:41 回覆:45 積分:17 註冊:2004-01-07 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 我覺得問題并不是出在ADO存取技術上﹒
第一次Run程式時﹐編譯器會對所有程式檔進行編譯﹐產生和專案檔同名的執行
檔(EXE)或者動態連接函式庫(DLL)﹐然后再執行已經編譯完成的程式﹐相比
之下﹐其所需要的時間就會比較久一些﹒之后再Run程式(使用F9功能或
Run\Run功能)時﹐編譯器會只對修改過的檔案做編譯動作﹐隨即產生執行
檔﹐故Run的速度就會比較快﹒
當然也有一些特殊的情況﹐當您選擇Project\Build Project功能時﹐無論是第
幾次Run程式﹐其都會對所有的程式檔做編譯動作﹐完完全全的重頭檢查編譯﹐
再產生執行檔﹐故每次Run所用的時間都會較久一些﹐這個方法适用于當EXE檔
當了或出錯時﹐用此方法﹐即可將每一個Unit和Form都做編譯﹐再產生執行檔﹒ =========================
我是您的朋友﹐有您真好﹗
=========================
發表人 - cashxin2002 於 2004/12/03 09:14:21
------
忻晟 |
mchakuna
一般會員 ![]() ![]() 發表:41 回覆:45 積分:17 註冊:2004-01-07 發送簡訊給我 |
引言: 您好﹗ 我覺得問題并不是出在ADO存取技術上﹒ 第一次Run程式時﹐編譯器會對所有程式檔進行編譯﹐產生和專案檔同名的執行 檔(EXE)或者動態連接函式庫(DLL)﹐然后再執行已經編譯完成的程式﹐相比 之下﹐其所需要的時間就會比較久一些﹒之后再Run程式(使用F9功能或 Run\Run功能)時﹐編譯器會只對修改過的檔案做編譯動作﹐隨即產生執行 檔﹐故Run的速度就會比較快﹒ 當然也有一些特殊的情況﹐當您選擇Project\Build Project功能時﹐無論是第 幾次Run程式﹐其都會對所有的程式檔做編譯動作﹐完完全全的重頭檢查編譯﹐ 再產生執行檔﹐故每次Run所用的時間都會較久一些﹐這個方法适用于當EXE檔 當了或出錯時﹐用此方法﹐即可將每一個Unit和Form都做編譯﹐再產生執行檔﹒ [/b][/blue]我想我没有把问题说清楚, 首先, 我的程序已编译成EXE. "第一次运行"是指从系统启动时第一次运行那个EXE时特别慢, 如果你第一次运行后把它关掉, 直到关机前, 不管你重运行那个EXE多少次都是立即响应的, 没有问题. 所以我想是ADO初始化的问题. |
wameng
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
mchakuna
一般會員 ![]() ![]() 發表:41 回覆:45 積分:17 註冊:2004-01-07 發送簡訊給我 |
引言: 可能原因: 1.我覺得應該是您沒有在 程序一啟動時就 ADOConnection1.connected :=True; 因此等到要查詢時,才連接數據庫。不会啊, 我一启动就立即连接. 引言: 2. ADO 沒有補丁。是使用哪一版本呢? 我使用ADO很久,沒碰過類似您遇到的情形。我也不清楚是什么版本, 反正是安装了Delphi 7.0后就一直用着没有什么补丁. 但我一直有一个问题, 我不太清楚怎样正确使用Query元件. 我的程序中只有一个ADOQuery, 而所有SQL查询都是通过这个元件进行的. 我的使用方法如下 try with ADOQuery do begin Active := False; Close; if not Prepared then Prepared := True; with Sql do begin Clear; Add( ' ... ' ); // 加入我的SQL Open; // 其它处理代码 end; end; finally Close; if Prepared then Prepared := False; end;这样,我这样写有没有问题呢? 發表人 - mchakuna 於 2004/12/03 16:19:09 |
wameng
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
mchakuna
一般會員 ![]() ![]() 發表:41 回覆:45 積分:17 註冊:2004-01-07 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 將您的程式碼稍做修改如下﹕
begin try with ADOQuery do begin Active := False;//此句刪除﹐因為此句和以下的Close方法 //是相同的作業﹐皆為斷開和資料庫的連接 Close; if not Prepared then Prepared := True;//此句刪除 with Sql do begin Clear; Add( ' ... ' ); // 加入我的SQL Open; // 其它处理代码 end; end; finally Close; if Prepared then Prepared := False;//此句刪除 end;========================= 我是您的朋友﹐有您真好﹗ ========================= 發表人 - cashxin2002 於 2004/12/03 18:04:13
------
忻晟 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |