zoukankan      html  css  js  c++  java
  • VB6操作ACCESS文件

    VB6操作ACCESS文件

    Option Explicit
    
    Const Dict_DB = "adatabase.mdb"
    
    '先要引用  Microsoft ActiveX Data Objects 2.8 Library
    
    Public cnn As ADODB.Connection
    Public rst As ADODB.Recordset, rst2 As ADODB.Recordset
    Public cmd As ADODB.Command
    
    
    Private Sub Form_Load()
    
    '创建对数据库的连接
        Dim mdbA As String
    
        Set cnn = New ADODB.Connection
        mdbA = App.Path & "\" & Dict_DB
        With cnn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .Open mdbA
        End With
    
        '创建记录集   adCmdTable
        Dim sheetName As String
    
        Set rst = New ADODB.Recordset
        sheetName = "texts"
        rst.CursorLocation = adUseClient    '或者adUseServer
        rst.Open Source:=sheetName, ActiveConnection:=cnn, CursorType:=adOpenDynamic, LockType:=adLockOptimistic, Options:=adCmdTable    '类型adCmdTable
    
        '记录集的一些数据
        Dim i%, n As Long
    
        Debug.Print "列的数目:", rst.Fields.Count
        Debug.Print "行的数目:", rst.RecordCount
    
        For i = 0 To rst.Fields.Count - 1
            Debug.Print "" & i & "列名称:", rst.Fields(i).Name
        Next
    
        '关闭记录集
        rst.Close
    
        '用SQL的方法创建记录集   adCmdText
        Dim sSQL$
        sSQL = "SELECT count(*) FROM texts "
        rst.Open Source:=sSQL, ActiveConnection:=cnn, CursorType:=adOpenDynamic, LockType:=adLockOptimistic, Options:=adCmdText    'adCmdText
    
        Debug.Print "Sql count方法,记录总数:", rst(0)
        rst.Close
    
        sSQL = "SELECT * FROM texts "
    
        rst.Open Source:=sSQL, ActiveConnection:=cnn, CursorType:=adOpenDynamic, LockType:=adLockOptimistic, Options:=adCmdText    'adCmdText
    
        Debug.Print "Sql 方法,列的数目:", rst.Fields.Count
        Debug.Print "Sql 方法,行的数目:", rst.RecordCount
    
        '浏览数据
        rst.MoveFirst
        Debug.Print "" & rst.AbsolutePosition & "条:", rst.Fields(0)
        While Not rst.EOF
            rst.MoveNext
        Wend
        rst.MovePrevious
        Debug.Print "" & rst.AbsolutePosition & "条:", rst.Fields(0)
    
        '添加新数据
        rst.AddNew
        rst.Fields(3) = "This is new record."
        rst.Update
    
        rst.MoveLast
        Debug.Print rst.RecordCount, rst.Fields(3)
    
        '修改数据
        rst.Fields(3) = "This is new record---edited."
        Debug.Print rst.RecordCount, rst.Fields(3)
    
        '删除数据
        rst.Delete
        rst.Update
        rst.MoveLast
        Debug.Print rst.RecordCount, rst.Fields(3)
    
        rst.Close
        
        '执行sql的2个方法,注意:得到的数据集,都不能使用RecordCount和AbsolutePosition等属性
        
        sSQL = "SELECT * FROM texts"
        '1,ADODB.Connection 的成员 Function Execute(CommandText As String, [RecordsAffected], [Options As Long = -1]) As Recordset
        '但是用rs的效果没有直接connection.execute的效率来的高?connection.execute一般用来执行update insert into delete 语句不返回记录集,不返回结果的。
    
        Set rst = cnn.Execute(sSQL)
    
        Debug.Print rst.Fields.Count, rst.RecordCount
        rst.MoveFirst
        Debug.Print rst.Fields(0), Left(rst.Fields(3), 20)
        rst.Move 12
        Debug.Print rst.Fields(0), Left(rst.Fields(3), 20)
    
        rst.Close
    
        '2,ADODB.Command 的成员 Function Execute([RecordsAffected], [Parameters], [Options As Long = -1]) As Recordset
    
        Set cmd = New ADODB.Command
        cmd.ActiveConnection = cnn
        cmd.CommandType = adCmdText
        cmd.CommandText = sSQL
        Set rst = cmd.Execute
        
        Debug.Print rst.Fields.Count, rst.RecordCount
        rst.MoveFirst
        Debug.Print rst.Fields(0), Left(rst.Fields(3), 20)
        rst.Move 12
        Debug.Print rst.Fields(0), Left(rst.Fields(3), 20)
        
        rst.Close
        
        Set cmd = Nothing
        
        
        cnn.Close
        Set cnn = Nothing
    End Sub
  • 相关阅读:
    老男孩Day17作业:后台管理平台编辑表格
    老男孩Day16作业:登录、注册、后台管理页面(动态)
    老男孩Day15作业:商城列表页面(静态)
    老男孩Day14作业:堡垒机
    老男孩Day13作业:ORM学员管理系统
    老男孩Day12作业:RabbitMQ-RPC版主机管理程序
    老男孩Day10作业:主机管理程序
    老男孩Day9作业:高级FTP
    面试遇见钓鱼公司怎么办?
    宝能技术岗面试
  • 原文地址:https://www.cnblogs.com/mitang/p/3050853.html
Copyright © 2011-2022 走看看