VCL How To - ADO 元件篇 |
|
bruce0211
版主 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
元件名稱:TADOConnection
文件版本:for BCB
文件作者:ray.huang@imageweb.com.tw ●前言
ADO(Active Data Object)是微軟公司基於OLE DB的資料庫模型。實現了一系列COM連結,通過資料庫提供者(Data Provider)和資料庫使用者(Data Consumer)來實現廣義的資料庫連結存取。ADO模型一方面簡化了資料存取的連結,另一方面在ASP等Internet應用中也得到了大量的使用。BCB與 Delphi 中ADO資料控制元件封裝了ADO的各項功能,使得撰寫ADO程式和在Visual Basic中一樣的容易。 ●BCB 與 Delphi 中所提供的 ADO 元件如下:
TADOConnection 連結資料來源元件
TADOCommand封裝 ADO 的 Command 物件,提供 SQL 敘述
TADODataSet封裝 ADO 的 RecordSet 物件,提供 ADO 資料存取及處理
TADOTable連結特定資料表元件。(模擬 BDE/IDAPI TTable 元件)
TADOQuery執行 SQL 敘述元件。(模擬 BDE/IDAPI TQuery 元件)
TADOStoredProc呼叫資料庫預儲程序元件
TRDSConnection封裝 ADO 的 RDS 功能
TADOConnection-連結資料來源元件 ●TADOConnection元件重要屬性
Connected-啟動資料連結與否
ConnectionString-連結來源的資訊及使用何種連結特性等連結字串。
可選擇Use Data Link File從MS資料連結檔案 .udl進行連結或Use Connection String設定連結資訊如下:
Provider=SQLOLEDB.1;Password=mypasswd;Persist Security Info=True;User ID=sa;Initial Catalog=DBName;Data Source=ServerName;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ComputerName
ConnectionTimeout-連結資料庫愈時時間,單位秒
ConnectionOptins-選擇以同步或非同步連節資料來源
coConnectUnspecified同步連結資料來源
coAsyncConnect非同步連結資料來源
CursorLocation-代表Cursor存在的地方
clUseClient-使用 client-side cursor 方式
clUseServer-使用 server-side cursor 方式。
IsolationLevel-交易層級,雖提供交易層級的選項但還是會受限於使用者於資料庫中的使用權限
LoginPrompt-連結資料庫是否出現Username/password登入視窗或將Username/password內建於ConnectionString中
Mode-資料連結所允許的存取動作
cmUnknown 未知的連結通常由使用權線來決定存取模式
cmRead 唯讀
cmWrite 寫入
cmReadWrite 可讀寫
cmShareDenyRead 防止其他使用者開啟與讀取
cmShareDenyWrite防止其他使用者開啟連結與寫入
cmShareExclusive 防止其他使用者開啟連結
cmShareDenyNone 防止其他使用者開啟連結以及其他權限
Provider-使用ADO驅動程式的種類 ●TADOConnection元件重要事件
OnBeginTransComplete 在執行BeginTrans方法完成時觸發
OnCommitTransComplete在執行CommitTrans方法完成後觸發
OnConnectComplete 資料庫連接成功之後觸發
OnDisconnect 資料庫斷線之後觸發
OnExecuteComplete 在執行ADO命令完成後觸發
OnInfoMessage 當資料從資料庫取得時觸發
OnRollbackTransComplete在執行RollbackTrans方法完成時觸發
OnWillConnect將要連線前觸發
OnWillExecute將執行命令前觸發
OnLogin登入時觸發
OnBeforeConnect連線前觸發
OnAfterConnect連線後觸發
OnAfterDisconnect斷線後觸發
OnBeforeDisconnect斷線前觸發 □若連結資料庫時依序觸發事件的順序如下
1.OnBeforeConnect
2.OnWillConnect
3.OnLogin
4.OnConnectComplete
5.OnInfoMessage
6.OnAfterConnect □若資料庫斷線時依序觸發事件的順序如下
1.OnBeforeDisconnect
2.OnDisconnect
3.OnAfterDisconnect ●TADOConnection元件重要方法
Open() 開啟連結,相當於Connected設為 true
Close() 關閉連結,相當於Connected設為false
GetProcedureNames() 取得資料庫中所提供的 stored procedures 名稱
ADOConnection1->GetProcedureNames(ListBox1->Items);
GetTableNames() 取得資料庫中可使用的 Table名稱
ADOConnection1->GetTableNames(ListBox2->Items, false);
Cancel取消一個嘗試中的連線
Execute() 執行ADO命令,可選擇執行的Command type與Execute Option
BeginTrans() transaction程序的開始
CommitTrans() 完成一段transaction更新資訊並結束
RollbackTrans() 當執行一段transaction失敗時回覆執行前狀況 三個一組的方法,為了讓一連串的命令能夠一起完成或一起失敗,所以必須建立transaction區塊,在這個區塊中必須依序的完成命令,若其中一項發生錯誤則執行RollbackTrans恢復未執行前的狀況,若成功執行則呼叫CommitTrans完整的更新資訊,這種方式對有相互影響的一組指令,有確保指令執行正確的保障 使用範例..輸入一段SQL指令
try { ADOConnection1-> BeginTrans(); //一連串的處理程序 ADOConnection1->Execute(“select * from Tabel1 where name=’David’”,cmdText, eoAsyncExecute); . } Catch(…) { //若有任何閃失就回覆前狀態 ADOConnection1-> RollbackTrans(); Return; } ADOConnection1->CommitTrans();PS.使用TADOConnection 任何方法時若TADOConnection 尚未連結則自動將Connected 設為true連結資料庫 ●如何開始使用TADOConnection元件 □首先需建立資料來源的連結,此連結必須透過windows的資料來源ODBC(Open Data Base Connection)進行設定,開啟windows的ODBC(98、Me於控制台中,2000、XP於 控制台/系統管理工具 中即可找到)選擇資料系統來源名稱新增來源步驟如下(以連結MS SQL作為範例): 1.選取資料來源的驅動程式代表使用者將連結的資料庫種類,使用MS SQL資料庫則選擇 SQL Server 2.自定資料來源名稱以及描述(名稱自定如 MS SQL 1描述可寫可不寫) 伺服器輸入該資料庫伺服器別名或遠端伺服器的IP Address 3.選擇認證系統,可選擇Windows NT或MS SQL的認證方式,接著輸入 Username以及Password 4.設定初始資料庫 5.進行連線測試,若測試成功代表此資料庫伺服器可透過本機 ODBC進行連接 ,若失敗則回到步驟 2或3修改設定,一般失敗的原因除了使用者名稱與密碼 錯誤或伺服端未提供相關權限外,另一原因通常在連接管道以及使用的Port的設定上錯誤,可回到步驟3的用戶端設定進行設定,選擇 TCP/IP 電腦名稱輸入該伺服器IP,port 選擇初始值 1433,個人是覺得透過TCP/IP協定做連結比較強悍,通常都可以解決伺服器聯不上的問題。 PS.連接不同的資料庫將會有不同的設定方式,改變也會隨著各種資料庫所提供服務有所不同,例如單機的資料庫就不提供網路連線的設定…等,但基本的設定是可以參考的。 □以上是ODBC的設定部分,連接上以後就已經大功告成一半了,接下來就是TADOConnection中ConnectionString 屬性進行設定,可選擇Use Data Link File從MS資料連結檔案 .udl進行連結或Use Connection String設定連結資訊,但充其量就是把Use Connection String存成檔案就是Use Data Link File且副檔名必須為.udl,但使用上就有點不同了,Use Connection String是直接以字串的形式寫在執行檔中,Use Data Link File是把它們給分離開另行一個檔案進行儲存,而後者的好處在於改變伺服器的位址時並不需要重新編譯執行檔,只需修改該.udl檔案即可,相當的便利所以筆者也建議使用者使用這種方式進行設定。但要如何產生.udl檔呢?其實在BCB中就有現成的.udl供使用者使用,依下列位址尋找: C:\Program Files\Common Files\SYSTEM\ole db\Data Links\BCDEMOS.udl 此檔案就是現成的,接下來copy一份來使用,並Rename成SQLDB.udl,雙擊打開檔案(Windows會自動開啟)進行編輯,依序將下列項目一一設定: 1.提供者選擇ODBC中新增的資料庫 2.連接設定伺服器或資料庫名稱以及使用者名稱帳號與密碼 3.進階與全部先不要動然後進行測試連接 PS.連接不同的資料庫將會有不同的設定方式,改變也會隨著各種資料庫所提供服務有所不同,例如單機的資料庫就不提供網路連線的設定…等,但基本的設定是可以參考的。 若這裡的設定與ODBC設定一樣應該也會成功,然後按下確定關閉(會自動Save)。接下設定ConnectionString屬性選擇Use Data Link File選取該檔SQLDB.udl即可,或於Use Connection String按下 Build…鍵也會看到檔案編輯的畫面一樣畫葫蘆,確定後會轉成字串如下: Provider=SQLOLEDB.1;Password=mypasswd;Persist Security Info=True;User ID=sa;Initial Catalog=DBName;Data Source=ServerName;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ComputerName 裡面的項目分別代表編輯中的各項設定值,有設定才有沒設定就不會顯示出來。 若要於程式中動態的設定如下: 檔案輸入 ADOConnection1->ConnectionString= “FILE NAME=C:\Program Files\Common Files\SYSTEM\ole db\Data Links\SQLDB.udl” 字串輸入 ADOConnection1->ConnectionString= “Provider=SQLOLEDB.1;Password=mypasswd;Persist Security Info=True;User ID=sa;Initial Catalog=DBName;Data Source=ServerName;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ComputerName” 設定完成後將Connection設為true進行連線則會出現 Login的視窗,那是因為LoginPrompt屬性為 true,當每次進行連線時就會詢問使用者帳號密碼,若不想出現則將LoginPrompt設為False,則會以ConnectionString中設定的資料進行Login,至此以完成資料庫的連結,至於資料集的處理交由其他原件處理。順帶說明若在Runtime中修改TADOConnection中的屬性值(Connectiont除外) 必須先進行斷線即Connectiont設為False方可修改,另外有些屬性與使用者於資料庫中的權限有關,必須加以修正與配合。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |