掌握VB中的ADO數據對象編程

發表于:2007-05-25來源:作者:點擊數: 標簽:編程那天掌握ado對象
那天聽到一位同學說他的女朋友是學新聞的可也學會了 數據庫 ,可學計算機的自己卻還是不會,總覺得有點汗顏.在各網站的論壇上,也??吹骄W友對數據庫的一些操作很難把握.我想簡單的介紹一下 VB 中關于ADO對象的一些常識,供同學們參考.其實本人也是剛剛懂了一點,
 那天聽到一位同學說他的女朋友是學新聞的可也學會了數據庫,可學計算機的自己卻還是不會,總覺得有點汗顏.在各網站的論壇上,也??吹骄W友對數據庫的一些操作很難把握.我想簡單的介紹一下VB中關于ADO對象的一些常識,供同學們參考.其實本人也是剛剛懂了一點,拼湊出這篇文章,希望高手們看了不要見笑,但同時也希望對初學者有所幫助。

  ADO是ActiveX Data Objects 的縮寫,是一項新的數據庫的存取技術。相對于VB5.0中的DAO他具有更為簡化的對象模型,無論是存取本地的還是遠程的數據,都提供了一致的接口.就我本人而言,ADO的確比DAO要好用得多。

  今天只就ADO的對象模型談一談.ADO定義了一個可編程的對象集合.ADO對象模型如圖所示:

按此在新窗口打開圖片javascript:DrawImage(this);" border="0" twffan="done"/>

  對于ADO其中對象來說,我覺得比較重要的是:Command,Connection,Recordset對象。

  雖然嚴格的說這是不準確的,但根據我的實際經驗確實如此.下面就分別來談一下。

  (1) Connection對象

  Connection對象用于建立與數據庫的連接.通過連接可從應用程序訪問數據源.它保存諸如指針類型,連接字符串,查詢超時,連接超時和缺省數據庫這樣的連接信息.

  (2) Command對象

  在建立Connection后,可以發出命令操作數據源.一般情況下,Command對象可以在數據庫中添加,刪除或更新數據,或者在表中進行數據查詢.Command對象在定義查詢參數或執行一個有輸出參數的存儲過程時非常有用。

  (3) Recordset對象

  Recordset對象只代表一個記錄集,這個記錄集是一個連接的數據庫中的表,或者是Command對象的執行結果返回的記錄集.在ADO對象模型中,是在行中檢查和修改數據的最主要的方法,所有對數據的操作幾乎都是在Recordset對象中完成的.Record對象用于指定行,移動行,添加,更改,刪除記錄。

  下面就具體地說說如何用ADO存取數據:

  在實際編程過程中使用ADO的一個典型的存取數據的步驟為:

  (1) 連接數據源

  (2) 打開記錄集對象

  (3) 使用記錄集

  (4) 斷開連接

  那么具體怎么是用呢?分別來看。(我在最后將給出一個完整的使用ADO的實例給大家參考.)

  (1) 如何連接數據源

  利用Connection對象可以創建一個數據源的連接.應用的方法是Connection對象的Open方法。

  語法:

clearcase/" target="_blank" >cccccc" width="90%" align="center" bgcolor="#e1e1e1" border="1">
Connection對象.Open ConnectionString, UserID, PassWord, OpenOptions

  其中:

  ·Connection對象為你定義的Connection對象的實例;

  ·ConnectionString為可選項,包含了連接的數據庫的信息;

  ·UserID 可選項,包含建立連接的用戶名;

  ·PassWord為可選項,包含建立連接的用戶密碼;

  ·OpenOptions為可選項,假如設置為adConnectAsync,則連接將異步打開.

  (2)打開記錄集對象

  實際上記錄集返回的是一個從數據庫取回的查詢結果集.因此他有兩種打開方法:一種使用記錄集的Open方法,另一種是用Connection對象的Execute方法。

  (a)記錄集的Open方法

  語法:

Recordset.Open Source, ActiveConnection, CursorType, LockType, Options

  其中:

  ·Recordset為所定義的記錄集對象的實例。

  ·Source可選項,指明了所打開的記錄源信息.可以是合法的命令,對象變量名,SQL語句,表名,存儲過程調用,或保存記錄集的文件名。

  ·ActiveConnection可選項,合法的已打開的Connection對象的變量名,或者是包含ConnectionString參數的字符串。

  ·CursorType可選項,確定打開記錄集對象使用的指針類型。

  ·LockType可選項 確定打開記錄集對象使用的鎖定類型。

  (b)Connection對象的Execute方法

  語法:

Set recordset=Connection.Execute(CommandText,RecordsAffected,Options)

  參數說明:

  ·CommandText 一個字符串,返回要執行的SQL命令,表名,存儲過程或指定文本。

  ·RecordsAffected 可選項,Long類型的值,返回操作影響的記錄數。

  ·Options 可選項,Long類型值,指明如何處理CommandText參數。

  介紹完了如何打開數據庫下面說說怎么使用吧.

  (3)使用記錄集

  (a)添加新的記錄:

  在ADO中添加新的記錄用的方法為:AddNew 它的語法為:

  Recordset.AddNew FieldList, Values

  ·Recordset為記錄集對象實例

  ·FieldList為一個字段名,或者是一個字段數組.

  ·Values為給要加信息的字段賦的值,如果FiledList為一個字段名,那么Values應為一個單個的數值,假如FiledList為一個字段數組,那么 Values必須也為一個個數,類型與FieldList相同的數組。

  再用完AddNew方法為記錄集添加新的記錄后,應使用UpDate將所添加的的數據存儲在數據庫中.不過你最好在用UpDate方法之前使用CancelUpdate方法來取消該項操作。

  (b)修改記錄集

  其實修改核對記錄集中的數據重新賦值沒有什么太大的區別,只要用SQL語句將要修改的字段的一個數據找出來重新賦值就可以了.這里不再細說了。

  (c)刪除記錄

  在ADO中刪除記錄集中的數據的方法為:Delete方法,這與DAO對象的方法相同,但是在ADO中它的能力增強了,可以刪掉一組記錄了.
它的語法如下:

Recordset.Delete AffectRecords

  其中的,AffectRecords參數是確定Delete方法作用的方式的,它的取值如下:

  ·adAffectCurrent 只刪除當前的記錄

  ·adAffectGroup 刪除符合Filter屬性設置的那些記錄.為了一次能刪除一組數據,應設置Filter屬性.

  (d)查詢記錄

  在ADO中查詢的方法很靈活,有幾種查詢的方法.

  ·使用連接對象的Execute方法執行SQL命令,返回查詢記錄集.

  ·使用Command對象的Execute方法執行CommandText屬性中設置的SQL命令,返回查詢記錄集.

  第一個方法的具體語法在前面數據連接時已經介紹過了,下面就第二方法具體說一下.

  Command對象的Execute方法的語法如下:

Command.Execute RecordsAffected, Parameters, Options '不返回記錄集
或者 Set Rscordset=cmmnad.Execute(RecordsAffected,Parameters,Options) '返回記錄集

  CommandText的語法為:

Command.CommandText=stringvariable

  其中: stringvariable為字符串變量,包含SQL語句,表名或存儲過程.

  (4) 斷開連接

  在應用程序結束之前,應該釋放分配給ADO對象的資源,操作系統回收這些資源并可以再分配給其他應用程序。

  使用的方法為:Close方法。

  語法如下:

Object.Close ' Object為ADO對象

  好了,說了那么多的理論,下面我們就應用一下吧!

 下面我給出一個我自己寫的實例,是一個用戶登錄,注冊,密碼修改,用戶刪除的應用小程序.你也可以到本版的下載倉庫中下載.

  具體實現方法:

  在本程序中包括了四個窗體.

  ·一個用于用戶登錄,名字為:FormDengLu;

  ·一個用于用戶注冊,名字為:FormZhuCe;

  ·另一個為用于用戶修改密碼,名字為:FormXiuGai;

  ·最后一個用于用戶刪除,名字為:FormShanChu.

  下面進行ADO對象的定義與設置,不過在這之前你必須在工程中引用ADO對象.

  定義ADO對象:

Dim ZhuCe As ADODB.Connection ' ZhuCe為連接對象
Dim rstZhuCe As ADODB.Recordset 'rstZhuCe為記錄集對象
Dim cmmZhuCe As ADODB.Command 'cmmZhuCe為命令對象

  在Form_Load過程中應進行如下的ADO設置:

Set ZhuCe = New ADODB.Connection '設置連接對象實例
ZhuCe.CursorLocation = adUseClient
'打開數據源連接
ZhuCe.Open "provider=Microsoft.Jet.OLEDB.4.0;Data Source=App.Path\注冊.mdb"
'設置記錄集對象實例
Set rstZhuCe = New ADODB.Recordset
Set rstZhuCe.ActiveConnection = ZhuCe
'打來記錄集
rstZhuCe.Open "select * from 注冊", ZhuCe, adOpenStatic, adLockOptimistic
'設置命令對象實例
Set cmmZhuCe = New ADODB.Command
Set cmmZhuCe.ActiveConnection = ZhuCe

  添加新的用戶信息(原碼)

If TextYongHuMing.Text = "" Or TextMiMa.Text = "" Or _
 TextTiShiWenTi.Text = "" Or TextTiShiDaAn.Text = "" Then
 MsgBox "筆添信息沒有添完,請輸入完全", vbOKOnly + vbExclamation, "提示"
Else
 If TextJiaoYan.Text = TextMiMa.Text Then
  rstZhuCe.MoveLast '記錄集中的移動方法,指針移動到記錄集的末尾
  rstZhuCe.AddNew '添加新的記錄
  rstZhuCe!用戶名 = TextYongHuMing.Text
  rstZhuCe!密碼 = TextMiMa.Text
  rstZhuCe!姓名 = TextXingMing.Text
  rstZhuCe!昵稱 = TextNiCheng.Text
  rstZhuCe!聯系地址 = TextLianXiDiZhi.Text
  rstZhuCe!郵政編碼 = TextYouBian.Text
  rstZhuCe!OICQ = TextOICQ.Text
  rstZhuCe!電子郵件 = TextMail.Text
  rstZhuCe!呼機 = TextHuJi.Text
  rstZhuCe!手機 = TextShouJi.Text
  rstZhuCe!密碼提問 = TextTiShiWenTi.Text
  rstZhuCe!提問答案 = TextTiShiDaAn.Text
  rstZhuCe!電話號碼 = TextDianHua.Text
  rstZhuCe.Update '將上面所有的信息存儲到數據庫中
  MsgBox "注冊成功", vbOKOnly + vbInformation, "注冊成功"
 Else
  MsgBox "校驗密碼與密碼不一致,請重新輸入", vbOKOnly + vbExclamation, _
"密碼錯誤"
  TextMiMa.Text = ""
  TextJiaoYan.Text = ""
 End If
End If

  下面為修改用戶密碼(在此中我并沒用到上面提到的兩種方法,但是這種方法也很簡單,實際上應該是屬于第一種方法.

  代碼如下:

Dim a As String
Dim b As String
If TextYongHuMing.Text = "" Or TextMiMa.Text = "" Or TextJiaoYanMiMa.Text = "" Or TextXinMiMa.Text = "" Then
 MsgBox "修改信息填寫不完全,請重新填寫!", vbOKOnly + vbInformation, "修改錯誤"
 TextYongHuMing.Text = ""
 TextMiMa.Text = ""
 TextJiaoYanMiMa.Text = ""
 TextXinMiMa.Text = ""
Else
 If TextXinMiMa.Text <> TextJiaoYanMiMa.Text Then
  MsgBox "校驗密碼與新密碼不一致,請重新填寫!", vbOKOnly + vbExclamation, "密碼錯誤"
  TextJiaoYanMiMa.Text = ""
  TextXinMiMa.Text = ""
 End If
 a = "select 用戶名,密碼 from 注冊 where 用戶名 ='" & _
 TextYongHuMing.Text & _
"' AND 密碼 = '" & _
TextMiMa.Text & "';"
 rstZhuCe.Open a, ZhuCe, adOpenKeyset, adLockOptimistic
 rstZhuCe!密碼 = TextXinMiMa.Text
 MsgBox "密碼修改成功,您的新密碼是:" & rstZhuCe!密碼 & "!", vbOKOnly + vbInformation, "修改成功"
End If

  也許你這樣看起來的確實有點麻煩,不過你可以去下載全部程序,那樣看起來比較簡單!

  下面是用戶的刪除.

  代碼如下:

Dim a As String
Dim ok As Integer
Dim i As Integer
rstZhuCe.MoveFirst
For i = 0 To rstZhuCe.RecordCount - 1
 If rstZhuCe!用戶名 = ComboYongHuMing.Text And rstZhuCe!密碼 = TextMiMa.Text Then
  ok = MsgBox("你確定真的要將此用戶刪除嗎?", vbOKCancel + vbQuestion, "提示")
  If ok = 1 Then
   rstZhuCe.Delete adAffectCurrent '刪除所找到的用戶
   MsgBox "此用戶已經成功刪除!", vbOKOnly + vbInformation, "刪除成功"
  End If
 End If
 rstZhuCe.MoveNext
Next I

  好了到此為止,我向大家介紹了一下ADO對象的簡單知識與基本用法,并賦上我的一點經驗供大家參考。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97