跳至內容

ActiveXDataObjects

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

微軟公司的ADOActiveXDataObjects)是一个用於存取資料來源的 COM 組件,做高層的編程介面層。ADO 是佇咧 OLE DB 之上,包含著足濟層次化的 COM 物件佮集合(Collections,嘛是一類物件,佇其他的層級物件包括了其他的層級物件)。 允准開發人員編寫存取資料的代碼毋免關心資料來源是按怎實現佮存取驅動的,干焦用關心到資料庫的連接。用資料庫的時陣,關於著 SQL 的智識毋是必要的,但是特定資料庫支援的 SQL 命令猶閣會當通過 ADO 中的命令物件(Command)來執行。

版本

ADO 予人設計來替代微軟古早的資料存取物件層(包括講 RDO(Remote Data Objects)和 DAO(Data Access Objects))。ADO 佇一九九六年八月佮 OLE DB 做伙去予人發布。

ADO 檔案通常儲存佇咧 C : \ Program Files ( x 八十六 ) \ Common Files \ System \ ado \ kha-tá-lok-guh 落。

  • Microsoft Office 二千中發布了 ActiveX Data Objects 二嬸一 Library(MSADO 二十一 . TLB)。
  • Microsoft Office 二千空二中發布了 ActiveX Data Objects 二嬸五 Library(MSADO 二十五 . TLB)。 引入來 Record 東西、Stream 東西、URL 結束;閣支援辨識 URL 模式的 OLE DB provider。
  • Microsoft ADO Extensions 二嬸五 for DDL and Security Library(MSADOX . DLL)包括著後禮拜 object 佮 collection:Catalog、Column、Group、Index、Key、Procedure、Property、Table、User object and Users collection、View。
  • Microsoft Jet and Replication Objects 二嬸五 Library(MSJRO . DLL)包括著矣 Filter object 佮 collection,JetEngine object,Replica object。
  • ActiveX Data Objects 二孵六 Library(MSADO 二十六 . TLB)引入來 CubDef . GetSchemaObject 方法、Command 流、Dialect 屬性、Command . Execute 方法、Field statusvalues、NamedParameters 屬性、Resultsets in streams、Single row resultset。
  • ActiveX Data Objects 二嬸七 Library(MSADO 二十七 . TLB)支援六十四位元 CPU
  • ActiveX Data Objects 二鋪八 Library(MSADO 二十八 . TLB)佇二空空三年八月隨 Windows Server 兩千空三作業系統發布,做為 Microsoft Data Access Components ( MDAC ) 二鋪八的組成部份。無引進任何新特性,但是做足濟安全方面的修補程式。
  • ADO 六板零 ( MSADO 六十 . TLB ) 包括佇 Windows Vista 中,做為 Windows Data Access Components ( Windows DAC ) 六鼻空的組成部份。功能上 ADO 六鼻零等等的價數 ADO 二鋪八 .
  • ADO 六桱一 ( MSADO 十五 . dll ):二空一一年十月發布。檔名使用矣十五這个老號。因為乎 Windows 七 SP 一的 ADO GUID 改變矣,致使佇這个作業系統編譯的使用矣 ADO 的軟體會當佇 Windows 七 SP 一上執行,但是袂當佇咧 Windows 七 Release 版抑是 Windows Vista 抑是 Windows XP 上執行。

二空空三年後佇新的編程框架 . NET Framework 中,微軟提供一个面向 Internet 的版本的 ADO,這號做 ADO . NET,賰的模型佮 ADO 差別真大,基本上需要重新徹底學習。

Microsoft . Jet . OLEDB . X . 零和 Microsoft . ACE . OLEDB . 一 Y . 零的區別:

  • Jet ia̋n-jín 會當存取 office 九十七孵二千空三,但是無法度取 office 兩千空七。ACE ia̋n-jín 是佮 Office 二千空七做伙發布的資料庫連接組件,會當存取 Office 二千空七抑是 Office 九十七孵二千空三。
  • ACE ia̋n-jín 會當存取當咧拍開的 Excel 檔案,Jet ia̋n-jín 袂使。

架構

ADO 包括十二个物件:

  • 連接(Connection), 代表到資料儲存的一个通過 OLE DB 的連接。該東西 open 方法相當一个連接字串做參數,建立一个資料連接。連接字串例:` " Provider='SQLOLEDB'; Data Source='TheSqlServerName'; Initial Catalog='Northwind'; Integrated Security='SSPI'; " `
  • 命令(Command), 一个 SQL 語句會當直接發予彼號 OLE DB provider,通過 CommandText 屬性。傳送參數化查詢或者是儲存程序通過 Parameter 物件抑是 Parameters 集合矣。執行一个查詢閣倒轉來結果做資料集物件通過 Execute 方法。
  • 記錄集(Recordset), 代表資料記錄的結果。包括著矣 Fields 佮 Properties 兩个集合啦。修改其中的資料了後,搧叫 Update 抑是 UpdateBatch 方法共改變了後的資料提交予資料來源。通過 AddNew 佮 Update、UpdateBatch 方法,會當向資料來源增加一條新的記錄。通過 Delete 佮 Update 方法,會當刪除資料來源的一條記錄。CancelUpdate 方法用於在 Update 失敗的時(如資料庫的約束袂當滿足)顯式強制地取消 Update 操作。修改資料來源的時陣有三種方法:
  • Immediate 隨:搧叫 Update 方法會共資料隨修改到資料來源內底。記錄集需要採用樂觀鎖(adLockOptimistic)抑是悲觀鎖(adLockPessimistic)預先鎖定。前者是咧修改資料來源的時陣對記錄加鎖並檢查是毋是保持資料完整性;後者是咧拍開記錄集的時陣就共這部份的資料上鎖。
  • Batch 批方式:使用批次樂觀鎖 adLockBatchOptimistic,逐見呼叫 Update 方法的時陣干焦佇臨時轉衝區當中修改資料。終其尾呼叫 UpdateBatch 共資料改做資料來源。佇咧這進前,會用得 UpdateCancel 放棄佇臨時勻衝區內底的修改。
  • Transaction 事務:若是 OLE DB provider 支援事務操作,會當通過 BeginTrans 佮 CommitTrans 方法來開始佮提交事務。RollbackTrans 用佇咧取消事務,共資料庫卷轉去到事務開始狀態。
  • 記錄(Record), 代表資料庫的一條記錄。包括著矣 Field 集合矣。
  • 流(Stream), 代表資料的順序集合。主要是用佇咧 RecordSet 東西,用於讀寫位元組流。定用於共 recordset 儲存為 XML 格式,向 OLE DB provider 傳送命令文字(替代 CommandText 東西)抑是包含二進位抑是文字的內容。
  • 錯誤(Error), 代表資料庫存取中 OLE DB 提供的錯誤
  • 欄位(Field), 代表一个資料庫欄位
  • 參數(Parameter), 代表一个參數,用佇咧 SQL 或者是儲存程序。
  • 屬性(Property), 儲存物件的資訊
  • ImmediateThe recordset is locked using the adLockOptimistic or adLockPessimistic lock .
  • Batch:recordset 使用 adLockBatchOptimistic 上鎖。逐改 Update 操作佇一个臨時 buffer 中修改資料。當 UpdateBatch 呼叫時資料才真正修改轉去資料庫。搧叫 UpdateCancel 放棄臨時 buffer 中資料。
  • Transaction:若是 OLE DB 允准事務操作,著 BeginTrans、CommitTrans、RollbackTrans 可憐叫

ADO 包含四个 collection:

  • Fields:包括著矣 Field 東西。
  • Properties:包括著矣 Property 東西。
  • Parameters:包括著矣 Parameter 東西。
  • Errors:予人包含佇一个 Connection 物件內底。當 ADO 操作產生一个錯誤,Errors 予清空,然後 provider 產生的錯誤作為 Error 物件儲存到這个 Errors 集合內底。

使用

ADO 組件的使用需要利用支援 COM 的高階語言,比如講 ASP 中的 VBScript 抑是講 Visual Basic,甚至乎微軟的競爭對手 Borland 的產品 Delphi,, 這馬嘛支援使用 ADO 來存取資料庫。

使用 ADO 存取資料的一寡基本步驟:

一 . 建立連接物件去連結資料庫(Create a connection object to connect to the database .) 二 . 建立記錄集物件來取得資料(Create a recordset object in order to receive data in .) 三 . 拍開連接(Open the connection) 四 . 佇記錄集中完成 SQL 語法的描述(Populate the recordset by opening it and passing the desired table name or SQL statement as a parameter to _ open _ function .) 五 . 對取得的資料進行搜揣/處理操作。 六 . 確定改變資料(Commit the changes you made to the data ( if any ) by using _ Update _ or _ UpdateBatch _ methods .) 七 . 關起來記錄集(Close the recordset) 八 . 關起來接(Close the connection)

ASP 範例

下列的 ASP 範例使用 ADO 佇咧 " Phonebook " 表中選取 " Name " 欄位,其中 " PhoneNumber " 等於 " 五百五十五鋪五千五百五十五 "。

這相當的下列的 ASP code,以 plain SQL 取代 Recordset object:

C 語言例

ADOX

ADO 包含的物件會當建立、維護、刪除予定資料來源的記錄。猶毋過,建立佮管理資料庫佮其所包含的物件,ADO 就力有無掠矣。為此,ADOX,即 Microsoft ADO Ext . for DDL and Security,提供這方面的功能,主要包括講 Data Definition Language ( DDL ) 物件佮安全管理。此外,Jet 資料庫 ia̋n-jín 的真濟功能攏是 ADO 佮 ADOX 無具備的;JRO,即 Microsoft Jet and Replication Objects 二嬸五 Library 提供這方面的補充功能。

參考文獻

==外部連結==* 微軟 ADO 開發資訊頭頁

參見

  • ADO . NET