<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)航:
     
    主站蜘蛛池模板: 中文字幕免费视频精品一| 18禁在线无遮挡免费观看网站| 伊人久久亚洲综合影院| 国产性生大片免费观看性| 亚洲无人区视频大全| 亚洲成?v人片天堂网无码| 日韩免费无码视频一区二区三区| 亚洲啪AV永久无码精品放毛片| 精品亚洲成α人无码成α在线观看 | 亚洲精品天堂成人片AV在线播放| 亚洲精品无码久久久| 在线人成精品免费视频| 黄页网址在线免费观看| 在线电影你懂的亚洲| 亚洲AV永久无码精品一区二区国产| 一级毛片在线免费看| 免费一区二区三区在线视频| 亚洲日本在线播放| 亚洲欧洲日产国码一级毛片| 日本亚洲免费无线码| a成人毛片免费观看| 亚洲avav天堂av在线网毛片| 亚洲国产成人久久综合一 | 久久精品国产亚洲AV| 亚洲人成在线播放网站岛国| 国产乱子伦精品免费无码专区 | 国产免费av片在线无码免费看| 无码成A毛片免费| 日韩a毛片免费观看| 亚洲日韩精品国产一区二区三区 | 亚洲免费视频观看| 亚洲日韩精品一区二区三区无码 | 亚洲国产精品久久久天堂| 日本一线a视频免费观看| 免费在线观看h片| 爱丫爱丫影院在线观看免费| 日韩精品视频在线观看免费| 亚洲人片在线观看天堂无码| 亚洲精品视频在线观看免费| 亚洲va久久久噜噜噜久久| 国产亚洲大尺度无码无码专线|