分享

VB6.0 对ACCESS的控制总结——无需控件版(建库,删库,建表,删表,增加行,删除行)

 hdzgx 2019-12-07
'前言:<span style="font-family: Arial, Helvetica, sans-serif;">  VB6.0对数据库的操作方法很多,对于初学者来说也比较乱.用控件操作数据库是很简洁的,但相对的局限性也变大了.总结了相对简介而使用的几个功能希望大家喜欢.</span>
</pre><pre name="code" class="vb">
</pre><pre name="code" class="vb">
</pre><pre name="code" class="vb">
  1. '引用"Microsoft ActiveX Data Objects 6.0 Library",
  2. '这个东西的简称就是ADO,它是VB6数据库最核心的
  3. '对象群,也是VB数据库开发人员经常所引用的对象
  4. '库,在VB6中你可以看到它的各种版本,从2.0版到
  5. '2.6版都有.
  6. '
  7. '我们还要引用对象库"Microsoft ADO Ext 6.0. For DDL Security",简称为ADOX,
  8. '其库文件名为是:Msadox.dll。ADOX是对 ADO 对象和编程模型的扩展,它将 ADO
  9. '扩展为包括创建、修改和删除模式对象,如表格和过程。它还包括安全对象,用于
  10. '维护用户和组,以及授予和撤消对象的权限
  11. '
  12. '对象 说明
  13. ' Catalog 包含描述数据源模式目录的集合?
  14. ' Column 表示表?索引或关键字的列?
  15. ' Group 表示在安全数据库内有访问权限的组账号?
  16. ' Index 表示数据库表中的索引?
  17. ' Key 表示数据库表中的主关键字?外部关键字或唯一关键字?
  18. ' Procedure 表示存储的过程?
  19. ' Table 表示数据库表,包括列、索引和关键字。
  20. ' User 表示在安全数据库内具有访问权限的用户账号?
  21. ' View 表示记录或虚拟表的过滤集?
  22. 'ADODB是动态数据链接对象
  23. 'Recordset是ADODB的一个子类
  24. '一般情况下我们定义:
  25. 'Dim Rst As New ADODB.Recordset
  26. Private Sub Create_Database_Click(Index As Integer)
  27. '建库 这里建立的mdb文件,用VB自带的ACCESS是无法打开的.需要下载Access2000打开mdb文件,观察数据库的删建情况.
  28. Dim cat As ADOX.Catalog
  29. Set cat = New ADOX.Catalog
  30. '当前目录下建立名为 newdata的Access数据库
  31. 'cat.Create ("Provider=Microsoft.jet.oledb.4.0;DATA SOURCE=" + App.Path & "\newdata.mdb" + ";")
  32. cat.Create ("provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "/newdata.mdb;")
  33. End Sub
  34. Private Sub Delete_Database_Click()
  35. '删库
  36. '在模块中引用Public Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long 'API 删除函数
  37. 'DeleteFile "C:\Users\wangqi\Desktop\数据库\newdata.mdb" '绝对路径
  38. DeleteFile "" & App.Path & "/newdata.mdb" '如果你用绝对路径写程序,当你的程序用在其他电脑上的时候,路径就变了。所以写程序尽量写相对路径,方便移植。
  39. End Sub
  40. Private Sub Create_Table_Click()
  41. '建表
  42. Dim cn As New ADODB.Connection '用ADODB需要引用Microsoft ActiveX Data Objects 6.0 Library.之前我们已经引用过了。
  43. cn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "/newdata.mdb;persist security info=false" 'newdata:数据库的名字
  44. real_time = Now
  45. cn.Open
  46. cn.Execute "create table [" & real_time & "] ([dat] DATE,[x_temperature] integer,[y_temperature] integer,[x_weight] integer,[y_weight] integer);" '这里就可以用now函数做表的名子
  47. 'cb.Execute "create index index_dat on [" & Now() & "] (dat)" '这个写法也ok
  48. cn.Execute "create index index_dat on [" & real_time & "] (dat)"
  49. cn.Execute "create index index_x_temperature on [" & real_time & "] (x_temperature)"
  50. cn.Execute "create index index_y_temperature on [" & real_time & "] (y_temperature)"
  51. cn.Execute "create index index_x_weight on [" & real_time & "] (x_weight)"
  52. cn.Execute "create index index_y_weight on [" & real_time & "] (y_weight)"
  53. ' 索引名 on 表名 (字段名)
  54. cn.Close
  55. Text1.Text = real_time
  56. End Sub
  57. Private Sub Delete_Table_Click()
  58. '删表
  59. Dim cn As New ADODB.Connection
  60. cn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "/newdata.mdb;persist security info=false"
  61. cn.Open
  62. cn.Execute "drop table [" & real_time & "];" '[要删除的表名]
  63. cn.Close
  64. Text1.Text = "表已删除"
  65. End Sub
  66. Private Sub Create_Row_Click()
  67. '建行
  68. Dim Rst As New ADODB.Recordset 'Rst为记录集对象实例
  69. Dim str As String
  70. Dim cn As New ADODB.Connection
  71. cn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "/newdata.mdb;persist security info=false" 'newdata:数据库的名字
  72. cn.Open
  73. str = "select *from [" & real_time & "] "
  74. '记录集的打开方法:Recordset.Open Source, ActiveConnection, CursorType, LockType, Options
  75. ' source可选项,指明了所打开的记录源信息.可以使合法的命令,对象变量名,SQL语句,表明,存储过程调用,活保存记录集的文件名.
  76. ' ActiveConnection可选项,合法的已打开的Cnnection对象的变量名,或者是包含ConnectionString参数的字符串
  77. ' CursorType可选项,确定打开记录集对象使用的指针类型
  78. ' LockType可选项,确定打开记录集对象使用的锁定类型
  79. 'CursorType(游标类型)有四种:
  80. ' AdOpenForwardOnly = 0 只能用MoveNext读取,并且打开的同事建立的数据库的备份,不能即时体现数据库记录状态,比如记录的编辑和增减.
  81. ' AdOpenKeyset = 1 可上下滚动的游标,给打开的记录创建了一个关键字列表,类似记录集的描述,访问的时候才去去的数据值,就是说
  82. ' 可以即时看到修改信息,但是不能即时的到数据是否删除的信息,因为这个关键字列表是事先初始化好的.
  83. ' AdOpenDynamic = 2 完全可以滚动,可得到数据的最新状态,执行效率也会有所降低(常用).
  84. ' AdOpenStatic = 3 完全可以滚动,但是和adOpenKeyset类似,它先将数据库备份文件之后进行操作.可以断开数据库连接后继续使用
  85. '
  86. '记录集锁的类型有四种:
  87. ' AdLockReadOnly = 1 只读锁,不能修改记录
  88. ' AdLockPessimistic = 2 悲观锁,操作者打开之后立即上锁,知道修改完成或者放弃修改位置,此时其他人无法编辑.
  89. ' AdLockOptimisitic = 3 乐观锁,当记录将要被更新的时候才开始上锁,但是不能保证在提交修改之前是否有人改动过.
  90. ' AdLockBatchOptimistic = 4 批量乐观锁,SOL server中要使用它,必须打开一个可上下滚动的游标,如AdOpenKeyset,AdOpenStatic.
  91. '
  92. Rst.Open str, cn, 3, 3 '
  93. 'Rst.AddNew ([FieldList],[values]) FieldList为一个字段名,或是一个字段数组
  94. Rst.AddNew
  95. '建行Form7.Adodc1.Recordset.AddNew ' Adodc1.Refresh
  96. Rst.Close
  97. cn.Close
  98. End Sub
  99. Private Sub Delet_Row_Click()
  100. 'Recordset.Delete AffectRecords
  101. '其中的,AffectRecords参数是确定Delete方法作用的方式的,它的取值如下:
  102. ' adAffectCurrent 只删除当前的记录
  103. ' adAffectGroup 删除符合Filter属性设置的那些记录.为了一次能删除一组数据,应设置Filter属性
  104. 'MoveFirst,MoveLast,MoveNext,MovePrevious方法,移动到指定Recordset对象中的第一个、最后一个、下一个或上一个记录并使该记录成为当前记录.
  105. Dim Rst As New ADODB.Recordset 'Rst为记录集对象实例
  106. Dim str As String
  107. Dim cn As New ADODB.Connection
  108. cn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "/newdata.mdb;persist security info=false" 'newdata:数据库的名字
  109. cn.Open
  110. str = "select *from [" & real_time & "] "
  111. Rst.Open str, cn, 3, 3 '
  112. Rst.MoveLast '将指针指向最后一行记录进行删除.如果没有这一指令,删除的将是第一行
  113. Rst.Delete
  114. Rst.Update
  115. Rst.Close
  116. cn.Close
  117. End Sub

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多