在上一遍文章中我們說了VB中基于ADO的數據庫訪問,接下來讓我們一起來看一下ADO的七個對象,其中我們會重點講述CommandRecordse兩個對象。

我們先通過下面這張圖對ADO的七個對象有一個大概的了解:

 

 計算機生成了可選文字: 非獨立對象+l錯公吳才,J象,依性連接對象。保存訪問數據庫過程中發生的錯誤,可以通免應用程序意外終止ErrorConneCtion連接對象,用于創建數據深連接。,一‘贊何數據庫操作的革礎’ACtiy6C0nnC6tion睜.-J'.,參數對象,依假于命令對象.用于為參數查詢提供數據。同時使用參斂對象和命令對象,可使數據庫對查詢進行預編譯,從而提高執行速度Act腸廿eConned.on屬忖p己r己nleter鹿卜Command命令對象用于執行動作查詢、、‘電滬z產:.:'-、,甘魷。協.方法碑子護戶一夕護,戶戶l字段對象,依枚于記錄集對象。獲得記錄染中的每一個字段的伯息FieldReCOrdset記錄集對象。保存來自葵本表或命令對象返lr.]的結果。使用記錄集對象幾乎可以完成所有的數據操作屬性對象,除了Error錯誤對象以外,拼一個對象都有。可以訪問特定對象的主要伯息Property甲

 

     從圖中的關系線以及我們可以看出,當我們通過Connection對象與數據源建立連接以后,既可以通過Recordset對象對數據進行操作,也可以通過Command命令對象來執行查詢,然后在傳送給Recordset對象進行數據操作。

下面我們先說Recordset對象:

計算機生成了可選文字: adusecllent:客戶端臨時表,可以提供重新排序和使用索引查找記錄等adUseserver:服務器端臨時表,由服務器端的被檢索的數據源維護ACtiVeC0nn仁etion代表數據源的活動連接CUrS0rLOCationadlockReadonlv,默認值,只讀,無法更改數據adL0ckpessimistic:保守式記錄鎖定,在編輯時立即鎖定數據源adLockoptimistic:開放式記錄鎖定,執行updata方法時鎖定記錄adlockoatc卜optimistic,開放式批更新,執行updataoatch方法時鎖定記錄Open打開記錄集。例如:objrs.open(’·soL〔cT口令rROM系統用戶wH〔R〔用戶名=,’王永俊,'")LockTypeR6COrdSRecordCount:確定記錄集中的記錄數測試當前記錄位置是否位于記錄集的第·個記錄之前.如果位于則返回丫rue,否則返回falseBOf測試當前記錄位置是否位于記錄集的最后一個記錄之后。如果位于則返回下rue,否則返回falseEOf,HOVeFirstMOVeNeXtMOVeL日StMOVePreVIOUS

例如:

        

  1. Dim objCn As New Connection         Dim objRs As New Recordset  
  2.     Dim strCn As String  
  3.     Dim strSQL As String  
  4.            '建立數據庫連接  
  5.         objCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _  
  6.                                                 "Data Source=" & App.Path \實例1.mdb"  
  7.         objCn.Open  
  8.         '執行查詢命令,獲得用戶登錄口令  
  9.         strSQL = "SELECT 口令,身份  FROM 系統用戶 WHERE 用戶名='" & UserName & "'"                                                                                     
  10.         Set   objRs.ActiveConnection = objCn  
  11.         objRs.Open (strSQL)  
  12.         With objRs               '創建客戶端的記錄集  
  13.             .CursorLocation = adUseClient       '指定使用客戶端光標  
  14.             .CursorType = adOpenStatic          '指定使用靜態光標  
  15.             .Open "系統用戶", objCn, adOpenStatic, adLockReadOnly  
  16.         End With  
  17.         ShowData (lngPage)                   '顯示當前記錄頁數  

我們來說一下Command對象:

使用Command對象之前,我們需要執行一下步驟:

   1.通過設置ActiveConnection屬性是打開的連接與Command對象關聯。

   2.使用CommandText屬性定義命令(如SQL,儲存過程)的可執行文本。

   3.使用commandType屬性指定命令類型。通過Parameter對象和Parameters集合定義參數化查詢或存儲過程參數。

   4.使用Execute方法執行命令并在適當的時候返回Recordset對象

   5.使用 CreateParameter方法創建一個與命令相關的新的參數對象。

   6.Command對象傳遞給RecordsetSource屬性以便獲得數據。

具體實現:

  1. Private Sub Form_Load()  
  2.         Dim strcn As String  
  3.         Set objCn = New Connection  
  4.         strcn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;" & "Data Source=" & App.Path & "\實例5.mdb"  
  5.         objCn.ConnectionString = strcn  
  6.         objCn.Open  
  7.           
  8.         '創建執行參數查詢的command 對象 objcmd  
  9.           
  10.         Set objCmd = New Command  
  11.         Set objCmd.ActiveConnection = objCn   '創建連接  
  12.           
  13.         With objCmd  
  14.             .CommandText = "select * from 系統用戶 where 用戶名 like ?" & "and 身份 like ?"  
  15.             '定義命令的可執行文本  
  16.             .CommandType = adCmdText  '指定命令類型  
  17.         End With  
  18.         '為command對象創建參數  
  19.         Dim parm As New Parameter  
  20.             Set parm = objCmd.CreateParameter("用戶名", adVarChar, adParamInput, 10)  
  21.             objCmd.Parameters.Append parm  
  22.             Set parm = objCmd.CreateParameter("身份", adVarChar, adParamInput, 10)  
  23.             objCmd.Parameters.Append parm  
  24.             et objRs = New Recordset  
  25.           
  26.           
  27.         objCmd("用戶名") = "%" & Trim(txtUserName) & "%"    '%是什么意思???  
  28.           
  29.   
  30.         objCmd("身份") = "%" & txtStatus & "%"  
  31.           
  32.         Set objRs = objCmd.Execute() '返回recordset對象  
  33.             lbl4 = ""  
  34. End Sub  

 

我們還可以在一個Recordset對象實體中使用command對象

  1. Set cmd.ActiveConnection = cn  
  2. cmd.CommandText = strSql  
  3. cmd.CommandType = adCmdText  
  4. rs.Open cmd, , adOpenStatic, adLockOptimistic