<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大鳥的學(xué)習(xí)樂園
    路漫漫其修遠(yuǎn)兮,吾將上下而求索
    posts - 26,comments - 27,trackbacks - 0

    使用ADO控件可以方便的在VB6中訪問ODBC數(shù)據(jù)庫(kù),但是通過直接放置ADODS控件來獲得ADO的數(shù)據(jù)連接比較麻煩,我們可以在VB工程中創(chuàng)建一個(gè)公共數(shù)據(jù)模塊,將ADO控件的初始化、建立連接、關(guān)閉連接等操作都寫到函數(shù)中,這樣就可以在工程的其他模塊中共享調(diào)用這個(gè)ADO連接。
    一次完整的ADO調(diào)用操作分為如下幾個(gè)步驟:
    1.打開ADO到數(shù)據(jù)庫(kù)的連接,初始化ADO RECORDSET集。
    2.通過寫入SQL語(yǔ)句執(zhí)行查詢并返回查詢結(jié)果RECORDSET集;或者可以通過寫入SQL語(yǔ)句執(zhí)行相應(yīng)數(shù)據(jù)庫(kù)操作。
    3.釋放RECORDSET集,關(guān)閉數(shù)據(jù)庫(kù)連接。
    需要注意的是,每個(gè)動(dòng)態(tài)創(chuàng)建的ADO同時(shí)只能被一個(gè)過程調(diào)用,如果需要進(jìn)行多表并行操作,可能需要在公共數(shù)據(jù)模塊中建立多個(gè)動(dòng)態(tài)ADO。
    下面是相關(guān)的代碼:

    '-----------------------------------------------------------------
    '如下代碼保存在名為my.bas的工程模塊中
    Public CONN As Adodb.Connection        '定義ADO CONNECTION對(duì)象
    Public RS As Adodb.Recordset           '定義ADO RECORDSET對(duì)象
    '****************************
    '打開數(shù)據(jù)庫(kù)連接
    '****************************
    Function ConnOpen()                   
      Dim ASTR As String
      Set CONN = New Adodb.Connection
      ASTR = GetDatabasePath  'MDB文件數(shù)據(jù)庫(kù)路徑
      CONN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ASTR & ";Persist Security Info=False"
      '本例的ODBC連接為JET4.0的直接到MDB文件的連接,如果使用ODBC數(shù)據(jù)源可以使用如下CONNECTION串:
      'Provider=MSDASQL.1;Password="";Persist Security Info=True;Data Source=數(shù)據(jù)源名稱;Initial Catalog=數(shù)據(jù)表庫(kù)名稱
      CONN.Open
      Set RS = New Adodb.Recordset
      With RS Do
        ActiveConnection = CONN
        CursorType = adOpenDynamic
        LockType = adLockOptimistic
      End With
    End Function
    '****************************
    '關(guān)閉數(shù)據(jù)庫(kù)
    '****************************
    Function ConnClose()                       
       Set RS = Nothing
       CONN.Close
       Set CONN = Nothing
    End Function

    '**********************************************************
           獲得數(shù)據(jù)庫(kù)路徑
    本例數(shù)據(jù)庫(kù)保存在程序目錄下的DBS子目錄中,名為db1.mdb
    '**********************************************************
    Public Function GetDatabasePath() As String
        Dim sPath As String
        If Right$(App.Path, 1) = "\" Then
            sPath = App.Path + "dbs\"
        Else
            sPath = App.Path + "\dbs\"
        End If
       
        GetDatabasePath = sPath + "db1.mdb"
    End Function
    'End of my.bas
    '-----------------------------------------------------------------

    如下示例代碼為my.bas的使用方法:
    '-----------------------------------------------------------------
    '使用RS對(duì)象執(zhí)行SELECT語(yǔ)句
    'TableName和FieldName分別為表名和字段名
    '查詢結(jié)果保存在數(shù)組s中
    Private Sub RunSelectCommand()
        Dim s(99) as String
        Dim i as Integer
        i=0
        Call my.ConnOpen
            my.RS.Open "SELECT * FROM TableName"
            While Not RS.EOF
                i=i+1
                If Not isNull(my.RS!FieldName) Then s(i)=Cstr(my.RS!FieldName)
                RS.MoveNext
            Wend
        Call my.ConnClose
    End Sub
    '使用CONN對(duì)象執(zhí)行UPDATE/DELETE/INSERT語(yǔ)句
    'SQL語(yǔ)句放在變量sSQL中
    Private Sub RunSqlCommand()
        Dim sSQL as String
        Call my.ConnOpen
            my.CONN.Execute sSQL
        Call my.ConnClose
    End sub
    '對(duì)于DATAGRID和DATAREPORT這些需要DATASOURCE的控件可以做如下操作
    '使用SELECT語(yǔ)句打開RS的數(shù)據(jù)集
    Set OBJ.Datasource=my.RS
    '---------------------------------------------------------------------
    這個(gè)方法對(duì)于開發(fā)簡(jiǎn)單小型的MIS系統(tǒng)很實(shí)用,也可以在報(bào)表和數(shù)據(jù)表中使用,缺點(diǎn)是在多表操作和函數(shù)嵌套調(diào)用時(shí),一個(gè)動(dòng)態(tài)ADO對(duì)象不能同時(shí)執(zhí)行兩個(gè)工作,后一個(gè)寫入的SQL語(yǔ)句會(huì)覆蓋先寫入的SQL語(yǔ)句,當(dāng)在回到前一個(gè)過程時(shí),會(huì)因?yàn)樽侄握也坏蕉鲥e(cuò)。因此如果可能需要進(jìn)行多表操作,可以嘗試多定義幾個(gè)CONN 和RS對(duì)象。

    posted on 2008-11-26 07:24 大鳥 閱讀(362) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 91嫩草免费国产永久入口| 毛片免费观看网站| 亚洲免费观看网站| 又大又粗又爽a级毛片免费看| 日日摸夜夜添夜夜免费视频| 亚洲日本乱码在线观看| 国产四虎免费精品视频| 全部在线播放免费毛片| 4480yy私人影院亚洲| 又色又污又黄无遮挡的免费视 | 亚洲黄色免费电影| 欧洲精品免费一区二区三区| 久久精品免费网站网| 国产99在线|亚洲| 亚洲色WWW成人永久网址| 免费中文熟妇在线影片 | 在线观看成人免费视频不卡| 精品女同一区二区三区免费播放| 亚洲av成人无码久久精品| 日韩特黄特色大片免费视频| 日韩视频在线观看免费| 特级aa**毛片免费观看| 亚洲制服丝袜精品久久| 亚洲色婷婷六月亚洲婷婷6月 | 亚洲精品中文字幕无乱码| 亚洲性久久久影院| 在线播放免费人成视频在线观看| 免费a级毛片无码a∨免费软件 | 日本一区二区三区在线视频观看免费| 亚洲精品熟女国产| 亚洲午夜久久久久久久久电影网| 青青草国产免费久久久下载| 在线看片免费人成视久网| 一级特黄特色的免费大片视频| 亚洲日韩精品无码专区加勒比| 亚洲日韩区在线电影| 狠狠综合久久综合88亚洲| 在线观看免费国产视频| 精品久久久久国产免费| 猫咪免费人成网站在线观看| 国产精品免费一区二区三区|