在上一遍文章中我們說(shuō)了VB中基于ADO的數(shù)據(jù)庫(kù)訪問(wèn),接下來(lái)讓我們一起來(lái)看一下ADO的七個(gè)對(duì)象,其中我們會(huì)重點(diǎn)講述CommandRecordse兩個(gè)對(duì)象。

我們先通過(guò)下面這張圖對(duì)ADO的七個(gè)對(duì)象有一個(gè)大概的了解:

 

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

 

     從圖中的關(guān)系線以及我們可以看出,當(dāng)我們通過(guò)Connection對(duì)象與數(shù)據(jù)源建立連接以后,既可以通過(guò)Recordset對(duì)象對(duì)數(shù)據(jù)進(jìn)行操作,也可以通過(guò)Command命令對(duì)象來(lái)執(zhí)行查詢,然后在傳送給Recordset對(duì)象進(jìn)行數(shù)據(jù)操作。

下面我們先說(shuō)Recordset對(duì)象:

計(jì)算機(jī)生成了可選文字: adusecllent:客戶端臨時(shí)表,可以提供重新排序和使用索引查找記錄等adUseserver:服務(wù)器端臨時(shí)表,由服務(wù)器端的被檢索的數(shù)據(jù)源維護(hù)ACtiVeC0nn仁etion代表數(shù)據(jù)源的活動(dòng)連接CUrS0rLOCationadlockReadonlv,默認(rèn)值,只讀,無(wú)法更改數(shù)據(jù)adL0ckpessimistic:保守式記錄鎖定,在編輯時(shí)立即鎖定數(shù)據(jù)源adLockoptimistic:開(kāi)放式記錄鎖定,執(zhí)行updata方法時(shí)鎖定記錄adlockoatc卜optimistic,開(kāi)放式批更新,執(zhí)行updataoatch方法時(shí)鎖定記錄Open打開(kāi)記錄集。例如:objrs.open(’·soL〔cT口令rROM系統(tǒng)用戶wH〔R〔用戶名=,’王永俊,'")LockTypeR6COrdSRecordCount:確定記錄集中的記錄數(shù)測(cè)試當(dāng)前記錄位置是否位于記錄集的第·個(gè)記錄之前.如果位于則返回丫rue,否則返回falseBOf測(cè)試當(dāng)前記錄位置是否位于記錄集的最后一個(gè)記錄之后。如果位于則返回下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.            '建立數(shù)據(jù)庫(kù)連接  
  5.         objCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _  
  6.                                                 "Data Source=" & App.Path \實(shí)例1.mdb"  
  7.         objCn.Open  
  8.         '執(zhí)行查詢命令,獲得用戶登錄口令  
  9.         strSQL = "SELECT 口令,身份  FROM 系統(tǒng)用戶 WHERE 用戶名='" & UserName & "'"                                                                                     
  10.         Set   objRs.ActiveConnection = objCn  
  11.         objRs.Open (strSQL)  
  12.         With objRs               '創(chuàng)建客戶端的記錄集  
  13.             .CursorLocation = adUseClient       '指定使用客戶端光標(biāo)  
  14.             .CursorType = adOpenStatic          '指定使用靜態(tài)光標(biāo)  
  15.             .Open "系統(tǒng)用戶", objCn, adOpenStatic, adLockReadOnly  
  16.         End With  
  17.         ShowData (lngPage)                   '顯示當(dāng)前記錄頁(yè)數(shù)  

我們來(lái)說(shuō)一下Command對(duì)象:

使用Command對(duì)象之前,我們需要執(zhí)行一下步驟:

   1.通過(guò)設(shè)置ActiveConnection屬性是打開(kāi)的連接與Command對(duì)象關(guān)聯(lián)。

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

   3.使用commandType屬性指定命令類(lèi)型。通過(guò)Parameter對(duì)象和Parameters集合定義參數(shù)化查詢或存儲(chǔ)過(guò)程參數(shù)。

   4.使用Execute方法執(zhí)行命令并在適當(dāng)?shù)臅r(shí)候返回Recordset對(duì)象

   5.使用 CreateParameter方法創(chuàng)建一個(gè)與命令相關(guān)的新的參數(shù)對(duì)象。

   6.Command對(duì)象傳遞給RecordsetSource屬性以便獲得數(shù)據(jù)。

具體實(shí)現(xiàn):

  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 & "\實(shí)例5.mdb"  
  5.         objCn.ConnectionString = strcn  
  6.         objCn.Open  
  7.           
  8.         '創(chuàng)建執(zhí)行參數(shù)查詢的command 對(duì)象 objcmd  
  9.           
  10.         Set objCmd = New Command  
  11.         Set objCmd.ActiveConnection = objCn   '創(chuàng)建連接  
  12.           
  13.         With objCmd  
  14.             .CommandText = "select * from 系統(tǒng)用戶 where 用戶名 like ?" & "and 身份 like ?"  
  15.             '定義命令的可執(zhí)行文本  
  16.             .CommandType = adCmdText  '指定命令類(lèi)型  
  17.         End With  
  18.         '為command對(duì)象創(chuàng)建參數(shù)  
  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對(duì)象  
  33.             lbl4 = ""  
  34. End Sub  

 

我們還可以在一個(gè)Recordset對(duì)象實(shí)體中使用command對(duì)象

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