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

請問有關於TADOConnection連線的問題

答題得分者是:RaynorPao
l90425
初階會員


發表:95
回覆:152
積分:49
註冊:2008-04-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-09-03 20:45:32 IP:59.125.xxx.xxx 未訂閱
請問各位大大我按下Button2時為什麼 材料資料庫.ldb(Microsoft Office Access 記錄鎖定資訊)還是存在呢?
我是用OBDC的,
請問各位大大要怎麼才能讓TADOConnection斷線呢?
請大大幫幫忙!
謝謝!謝謝!

[code cpp]
void __fastcall TForm1::FormCreate(TObject *Sender)
{A2 = new TADOConnection(this);
A2 ->LoginPrompt = false;
A2 ->CursorLocation = clUseClient;
A2 ->ConnectOptions = coConnectUnspecified;
A2 ->Mode = cmUnknown;
A2 ->IsolationLevel = ilCursorStability;
A2 ->Provider = "MSDASQL.1";
A2->ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=材料資料庫";
A2->Connected = true;
ADOTable1->Active=true;
ADOTable1->Open();
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
A2->Connected=false;
delete A2;
}
[/code]
------
-謝謝大大熱心的回覆!謝謝!
編輯記錄
l90425 重新編輯於 2008-09-03 20:46:18, 註解 無‧
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-03 21:59:48 IP:61.60.xxx.xxx 訂閱
(1)要建立 DB 連線用 ADOConnection1->Open();
(2)要結束 DB 連線用 ADOConnection1->Close();
(3)ADOConnection1->Connected 是用來判斷目前是否有建立 DB 連線
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
l90425
初階會員


發表:95
回覆:152
積分:49
註冊:2008-04-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-03 22:26:19 IP:59.125.xxx.xxx 未訂閱
沒想到既然如此簡單真不愧是版主大大呀
謝謝!
還想請問大大一個問題
TADOConnection *A2= new TADOConnection(ADOConnection1);
A2->Close();
為什麼寫成這樣時沒有結束連線呢?
只有寫成ADOConnection1->Close();才會結束連線呢!

謝謝RaynorPao版主大大熱心的回覆!
謝謝!謝謝!

===================引 用 RaynorPao 文 章===================
(1)要建立 DB 連線用 ADOConnection1->Open();
(2)要結束 DB 連線用 ADOConnection1->Close();
(3)ADOConnection1->Connected 是用來判斷目前是否有建立 DB 連線
------
-謝謝大大熱心的回覆!謝謝!
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-09-04 11:31:08 IP:210.208.xxx.xxx 訂閱
(1)呃...你的程式碼好像有一點奇怪喔,既然已經動態 new 一個 TADOConnection 的 Instance (A2),為什麼還會有 ADOConnection1 呢?
(2)如以下的範例程式碼,並不會有你所說的問題

[code cpp]
AnsiString szAppPath=ExtractFilePath(Application->ExeName);
TADOConnection *adoc=new TADOConnection(Application);
adoc->ConnectionString=
"Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" szAppPath "Test.mdb";
adoc->Open();
if(adoc->Connected)
{
TADOQuery *adoq=new TADOQuery(Application);
adoq->Connection=adoc;

AnsiString aCmd="select * from TestTable";
adoq->Close();
adoq->SQL->Clear();
adoq->SQL->Add(aCmd);
adoq->Open();

ShowMessage(IntToStr(adoq->RecordCount));

adoq->Close();
delete adoq;
}
adoc->Close();
delete adoc;
[/code]

(3)建議你再檢查一次專案的設定,以及相關的程式碼
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
編輯記錄
RaynorPao 重新編輯於 2008-09-04 11:32:14, 註解 無‧
l90425
初階會員


發表:95
回覆:152
積分:49
註冊:2008-04-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-09-05 00:19:53 IP:59.125.xxx.xxx 未訂閱
嗯嗯!謝謝RaynorPao版主大大的用心回答!
所以我做了很多次的實驗,在做完實驗後,我發現了一件事就是


[code cpp]
adoc=new TADOConnection(Application);
adoc->ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=xxxxxx";
adoc->Open();
//ADOTable1->Open(); (但若加入這一行後,只有用"adoc->Close();"來關閉,還是無法解除"記錄鎖定資訊"。還必須加上ADOTable1->Close();這一行才能解除"記錄鎖定資訊"。)
adoc->Close();

[/code]

及,不用adoc->Open();來連線,用ADOTable1->Open()也能直接連線,關閉時也只要ADOTable1->Close();即能解除"記錄鎖定資訊"
[code cpp]
ADOTable1->Open();
ADOTable1->Close();
[/code]
以上說了那麼多個人心得廢話(sorry! 若有錯還請告訴我謝謝),
最後,還是要感謝版主大大總是那麼用心的回覆!
謝謝!謝謝!
------
-謝謝大大熱心的回覆!謝謝!
編輯記錄
l90425 重新編輯於 2008-09-05 00:20:42, 註解 無‧
系統時間:2024-04-19 19:07:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!