• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    ADO數據訪問模型初學者入門

    發布: 2007-5-25 09:18 | 作者: CQFZ | 來源: 天極網 | 查看: 38次 | 進入軟件測試論壇討論

    領測軟件測試網   ADO(ActiveXDataObjects)是Microsoft提供和建議使用的新型的數據訪問接口,具體實現為Automation。這樣,程序員可以在各種支持Automation的開發環境下方便地訪問ADO對象,如VisualBasic、VisualC++、VisualJ++及Delphi等。ADO被實現為OLEDB之上的一個薄層,這使得ADO可以有更快的訪問速度,更易使用,同時更節省資源。值得注意的是,對于VisualStudio6.0的用戶而言,現在提供的ADO2.0要比VisualStudio5.0時代的ADO1.5更加完整。這意味著程序員可以更為廣泛地使用ADO接口,甚至在所有的基于Windows平臺的數據訪問中使用它。比如對RDS(前身是ADC)的支持,可以方便的構建高效的Web應用。

      一、對ADO對象的主要操作

      對ADO對象的主要操作,同DAO、RDO庫的實現基本相同。主要包括6個方面:

      1.連接到數據源。這是可選的、通常涉及ADO的Connection對象。

      2.向數據源提交命令。通常涉及ADO的Command對象。在查詢中可以與參數對象(Parameter)協同使用。

      3.執行命令,比如一個SELECT腳本。

      4.如果提交的命令有結果返回,可以通過ADO的Recordset對象對結果進行操作,數據存儲在緩存中。

      5.如果合適,可將緩存中被修改的數據更新到物理的存儲上。

      6.提供錯誤檢測。通常涉及ADO的Error對象。

      以程序員的視角來看,ADO、DAO和RDO三者的對象名稱不很相同。但使用ADO對象要比DAO和RDO簡單得多。最主要的一點在于,程序員不用像在使用DAO和RDO那樣要從對象模型的頂層開始一步步的創建子對象。因此,ADO提供了一種更靈活的編程方式。

      二、ADO中主要對象的功能

      Connection對象,表示了一個到數據源的會話。使用Connection對象的成員,可以使用相應的屬性打開到數據源的連接,設置游標的位置,設置默認的當前數據庫,設置將使用的OLEDBProvider,直接提交SQL腳本等。值得注意的是,在提交SQL腳本的任務時,不用創建一個Command對象,就可完成查詢。另外,對Connection對象的創建是同其他對象無關的。Command對象,可被用于查詢數據庫并返回結果在Recordset對象中。也可以進行批操作和操縱數據庫的結構,當然,這需要使用的OLEDBProvider提供相應的支持。此外,可以將一個激活的Connection對象綁定到Command對象的ActiveConnection屬性,這使得多個Command對象實例可以共用一個Connection對象。

      Recordset對象,用來封裝查詢的結果,可稱為結果集。

      Field對象,用來表達一行結果中各子段的類型和值。

      Error對象,用來檢測和判斷在數據庫操作中出現的錯誤,比如連接失敗。 在ADO中,許多對象名后多了一個"s",比如Error->Errors,Field->Fields等等。添加"s"意味著是相應對象的Collection(集合)對象,比如Errors是Error對象的Collection對象。Collection有點像數組(Array),但不同的是,Collection可以以不同類型的數據或對象作為自己的元素,而數組中的各元素通常都是相同類型的。所以,在看到一個對象名最后是"s",通常表明這是一個Collection對象,比如Errors中的各元素是由Error對象的實例組成的。

      三、簡單的例子

      現在,我們在經過了前面的鋪墊后,終于可以進入寫代碼的過程了。下面是一系列在VisualBasic中編寫的代碼片段,其中對ADO的操縱完全用代碼來實現。在開始前,請不熟悉ActiveXAutomation的讀者牢記,我們正在使用的,是被實現為ActiveXAutomation的ADO組件。1.打開Connect.ion對象

      打開一個到數據源的連接,即Connection對象的VB代碼如下:

    Dim cn As ADODB.Connection
    ’聲明ADODB.Connection對象變量
    Dim strCN As String
    ’聲明存放連接串的字符串變量
    Set cn= New Connection
    ’實例化Connection對象
    ’生成連接串(ConnectionString)
    strCN="Provider=Microsoft.Jet.Oledb.3.51;
    UserID=Admin;"&_
    "DataSource=D:\MicrosoftVisual
    Studio\VB98\Nwind.mdb;"
    cn.Open strCN ’調用Connection對象的方法Open連接數據源

      以上代碼在訪問ADO對象時,使用了前綁定(Early-bind),實現前綁定需要從VisualBasic的Project菜單下選擇Reference菜單項,并選擇MicrosoftActiveXDataObjects2.0Library。在程序中聲明的strCN變量中,連接串屬性Provider標識了OLEDBProvider為OLEDBProviderforMicrosoftJet,因為我們訪問的是MicrosoftAccess數據文件,使用MicrosoftJetEngine可以獲得比ODBC更好的性能。在試驗以上代碼時有兩個地方要注意。首先,要根據系統安裝的OLEDBProviderforMicrosoftJet服務選擇相應版本,可能是3.51,也可能是4.0。在本例中使用的是3.51版本。如果使用4.0版本,首先需要將Provider屬性改為"Microsoft.Jet.Oledb.4.0";其次,DataSource屬性標識了所要訪問的數據文件的路徑,要根據自己的安裝情況作出適當的調整。文件Nwind.mdb通常被VisualStudio默認安裝,一般放在Visual Basic的工作目錄下。

      除了OLEDB Provider for MicrosoftJet以外,Visual Studio6.0還提供了以下的OLEDBProvider,如下所示。

    OLEDB Provider類型 數據源類型
    Microsoft OLEDB Provider for ODBC databases
    Microsoft OLEDB Provider for Microsoft Index Server Microsoft(r) Index Server
    Microsoft OLEDB Provider for Microsoft Active Directory Service Microsoft(r) Active Directory Service
    Microsoft OLEDB Provider for SQLServer Microsoft(r) SQLServer Microsoft OLEDB Provider for Oracle
    Oracle databases

      這意味著使用ADO接口可以方便地訪問以上的各種數據源,要做的就是選擇適當的OLEDB Provider。除了使用Connection對象的Open方法以外,還可通過Recordset對象的Open方法快捷地創建到數據源的連接。這充分體現了ADO的靈活性。

      2.創建Command對象

    Dim cmd As ADODB.Command

    Set cmd=New Command’實例化Command對象

      3.執行查詢

      以Command對象為例。

    Dim rs As New ADODB.Recordset

    Set cmd.ActiveConnection=cn’綁定激活的Connection對象實例

    cmd.CommandText="SELECT*from Customers"’生成SQL腳本

    Set rs=cmd.Execute’執行查詢

      上述的代碼僅僅是一種查詢途徑,此外,ADO的Connection對象的Execute方法和Recordset對象的Open方法也提供了查詢能力。返回的結果可以被保存在一個Recordset對象實例中以便后續的數據處理和操縱。例如:

    Dim rs As NewADODB.Recordset

    rs.Open cmd,cn,adOpenDymanic,adLockBatchOptimistic

      另外在SQL腳本的生成方式上,通?梢越柚鶳arameters/Parameter對象來完成。

      4.顯示和操縱數據

      查詢結果由Recordset對象封裝。對數據的操縱可以通過Recordset對象提供的成員(屬性和方法)來完成。

    rs.MoveFirst

    Do While Not rs.EOF’判斷EOF標記屬性(Endoffile)

    Debug.Print rs!CustomerID & vbTab & rs!CompanyName & _

    vbTab & rs!ContactName & vbTab & rs!ContactTitle

    rs.MoveNext’將游標指針移到下一條記錄

    Loop

      上述代碼將Recordset中的各行記錄打印在Visual Basic的Immediate Window中。為了看到打印的結果,可以在上述代碼之后,增加一條Stop語句,以便進入Debug狀態。

      5.更新記錄

      使用Recordset對象來完成Update操作。

      rs.Close’關閉之前建立的結果集

      ’打開新的結果集,具有寫操作權限

    rs.Open"Customers",cn,adOpenDynamic,adLockOptimistic,adCmdTable

    rs.MoveFirst’雖無必要,但可能是一個良好的習慣

    rs!CompanyName="Microsoft"’對相應字段賦予新值

    rs.Update’在物理存儲上生效

      除了Update以外,寫操作還包括AddNew(添加一條新記錄)和Delete(刪除一條新記錄)。另外,Recordset支持批處理,但這些特征需要由低層的OLEDBProvider支持。當寫操作出現錯誤時,可根據錯誤描述(訪問ADO的Error或VisualBasic的Err對象)來判斷原因。另一個需要注意的是,當使用Recordset對象完成寫操作時,需要預先指定Recordset對象實例非只讀。

      6.收尾工作

      在這個階段應該顯式的釋放相應的資源,如果不做的話,通常VisualBasic會自動釋放和回收資源。但對于一個有良好編程習慣的程序員來說,應該主動地做收尾工作,就像下面的代碼一樣。

    rs.Close

    Set rs=Nothing

    Set cmd=Nothing

    cn.Close

    Set cn=Nothing

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>