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

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

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

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

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

    發布: 2007-5-25 09:19 | 作者: EasyICE | 來源: AISUN EasyICE BLOG | 查看: 124次 | 進入軟件測試論壇討論

    領測軟件測試網  那天聽到一位同學說他的女朋友是學新聞的可也學會了數據庫,可學計算機的自己卻還是不會,總覺得有點汗顏.在各網站的論壇上,也?吹骄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方法。

      語法:

    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.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>