您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页vb操作access数据库的方法

vb操作access数据库的方法

来源:宝玛科技网
VB操作Access数据库方法

使用ADODB

首先,声明一个链接变量,并根据需要声明记录集变量。

Dim LocCnn1 As ADODB.Connection Dim LocRst1 As ADODB.Recordset

建立与数据库的链接,如果数据库没有口令,最后一行可以不写(写上也不会错)。

Set LocCnn1 = New ADODB.Connection LocCnn1.Open ″Provider=Microsoft.Jet.OLEDB.4.0?User ID=Admin?″ & _ ″Data Source=″ & App.Path & ″\\数据库名称.mdb?″& _ ″Mode=Share Deny None?Extended Properties=''?Persist Security Info=False?″ & _ ″Jet OLEDB?Database Password='asp561rbc'?″

这种方法虽然代码长一些,但对数据环境要求低,且结构清晰,所编写的发布程序也大为减小。由于与链接SQL Server等数据库的方法一样,因而大量的操作数据库的代码相同,当数据库需要由Access扩充到一些大型数据库,或由一些大型数据库裁剪出一个简单数据库时,程序的移植会比较方便。

另外,这种方法对于Access97及Access2000均能很好地支持,兼容性好。对于大量插入、删除、修改等操作,只在Connection层进行即可,既可提高速度又可减少代码。

如果还要获取具体的记录集内容,则须再根据条件打开具体的库表,代码如下:

Set LocRst1 = New ADODB.Recordset LocRst1.CursorType = adOpenKeyset LocRst1.LockType = adLockOptimistic LocRst1.Open ″SELECT ? FROM 表名″? LocCnn1?adCmdText

ADO常用方法

下面是我所掌握的使用ADO对数据库操作的一些常用方法,主要是提供给初学者作为参考,有不对的地方请指正。如有补充不胜荣幸

准备工作 ========

Dim conn As New ADODB.Connection '创建一个 Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行

Dim rs As ADODB.Recordset '创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用

Dim CnStr As String, Sql As String '创建两个字符串变量分别存放两个集合的SQL语句代码段

1、装载数据库(不属于Recordset集合) =============

Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$

'以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码

FileName = App.Path & \"\\'数据库名'\" DbIp = \"数据库地址\" DbName = \"数据库名\"

DbUser = \"数据操作员用户名\" DbPw = \"操作员密码\"

'以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量 '1)连接Access数据库: '-------------------

CnStr = \"PROVIDER=microsoft.jet.oledb.3.51;persist security info =false;data source=\" & FileName & \";Jet OLEDB:Database Password=\" & DbPw '2)连接Oracle数据库: '-------------------

CnStr = \"PROVIDER=MSDAORA.1;Password=\" & DbPw & \";User ID=\" & DbUser & \";Data Source=\" & FileName & \";Persist Security Info=True\" '其中:

'PASSWORD: 密码 'User ID: 用户号 'Data Source: 数据库名 'Persist Security Info: 'Provider:

'3)连接VF的DBF库: '----------------

CnStr = \"PROVIDER=MSDASQL.1;Persist Security Info=False;Driver={Micro

soft Visual FoxPro Driver};UID=\" & DbUser & \";SourceDB=\" & FileName &

\";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;\" '4)连接SQL的数据库 '------------------

CnStr = \"PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=\" & DbUser & \";pwd=\" & DbPw & \";DRIVER=SQL Server;DATABASE=\" & DbName & \";WSID=GQSOFT;SERVER=\" & DbIP

'也可以使用这段简易代码 CnStr = \"Provider=SQLOLEDB;Data Source=\" & DbIp & \";DATABASE=\" & DbName & \";UID=\" & DbUser & \";pwd=\" & DbPw Conn.Open cnstr '使用 Connection 集合的 Open 方法 与数据库建立连接 2、Recordset集合的常用方法 ========================== '1)打开一个表 '------------

Sql = \"select * from 表名\" 'SQL查询语句 Set rs = New ADODB.Recordset '新建一个实例

rs.Open Sql, conn '使用 Open 方法打开数据库中的一个表

'注意,这种打开方式只能使用 rs.MoveNext (即,向后移动行坐标)而不能像其他方向,并且不能修改数据内容 '

'rs.Open Sql, conn,1 '虽然只加了个“1”,但这种方法可以向任何方向移动行坐标。 '

'以下参数代表了这个可选值的含义

'0 = adOpenForwardOnly (默认值)打开仅向前类型游标。 '1 = adOpenKeyset 打开键集类型游标。 '2 = adOpenDynamic 打开动态类型游标。 '3 = adOpenStatic 打开静态类型游标。 '

'虽然使用以上方法可以可以实现行坐标(游标)的任意移动,但是仍然无法写入数据。因此需要进一步的对Open 方法进行完善

'rs.Open Sql, conn, 1, 3 '后面的3是确定读写权限的

'以下参数代表了这个可选值的含义

'1 = adLockReadOnly (默认值)只读 — 不能改变数据。 '2 = adLockPessimistic 保守式锁定(逐个) — 在编辑时立即锁定数据源的记录。

'3 = adLockOptimistic 开放式锁定(逐个) — 只在调用 Update 方法时才锁定记录。

'4 = adLockBatchOptimistic 开放式批更新 — 用于批更新模式(与立即更新模式相对)。 '

'2)读写数据 '----------

'增加一行记录并对新记录的内容进行修改并保存可以如下写法 rs.AddNew '增加一行记录

rs(\"...\")=\"...\" '数据读写操作 ...

rs.UpDate '保存写入资料,如果使用只读权限,则不能使用这个方法

rs.Close '这个方法用来关闭你所代开的表,如果不使用这个方法也可以,但是数据库仍然认为你在对标进行锁定,可造成数据库负担过重 2、对数据进行筛选和排序 =======================

Sql = \"select * from 表名\" 'SQL查询语句 '以上为打开一个表的所有内容

Sql = \"select top 50 * from 表名\" 'SQL查询语句 '以上为只打开前50行的记录

Sql = \"select top 50 列名1,列名2,列名5 from 表名\" 'SQL查询语句 '以上为只打开前50行的记录,并且只打开第1、2、5列数据

Sql = \"select * from 表名 where 列名1='\" & 字段 & \"'\" 'SQL查询语句 '以上为一个简单的筛选,表示打开的内容必须符合[列名1='\" & 字段 & \"'\"]的内容

'需要注意的是,数据库列的类型必须匹配,比如字符串类型需要以单引号括起 '而数字类型则不能用单引号括起

'另外SQL语句还支持通配符,例如 列名1 like '%\" & 字段 & \"%'\" 表示包含[字段]

'在表达式中的匹配

'? _(下划线) 任何单一字符

'* or % 零个或多个字符

'# 任何单一数字(0 — 9) '[charlist] 任何在字符表中的单一字符 '[!charlist] 任何不在字符表中的单一字符

'注:根据数据库的不同?、_和*、%的应用有所差别,比如SQL只使用% 和 _ 分别代表多个字符和单一字符

Sql = \"select * from 表名 where 列名1='\" & 字段 & \"' ORDER BY 字段1 ASC\" '对查询结果进行升序排列

Sql = \"select * from 表名 where 列名1='\" & 字段 & \"' ORDER BY 字段1 DESC\" '对查询结果进行降序排列

Sql = \"select * from 表名 where 列名1='\" & 字段 & \"' ORDER BY 字段1 DESC, ORDER BY 字段2 DESC\" '对查询结果进行降序排列(速度奇慢,不推荐使用)

3、Recordset集合的常用属性方法 ==============================

rs.BOF '是否游标在最上边 rs.EOF '是否游标在最下边 rs.RecordCount '记录集的行数(如果使用像前类型的游标,可能返回不准确)

rs.AddNew '新建一行记录

rs.Update '保存当前行被修改的记录 rs.Delete '删除当前行 rs.Close '关闭记录集

4、Fields集合的一些属性的解释 =============================

'以下为简写,正常情况需要rs.Fileds.。。。但是Fields属于Recordset的一个默认集合,因此可以省略

rs() '括号内可以是列名也可以是列的序号例如:rs(\"姓名\")、rs(3) 都是是可以的

rs(3).Name '返回列名 rs(3).Type '返回列的类型 rs(3).Value '返回当前行的值 rs.Fields.Count '返回列数

阅读全文(463) | 回复(2) |反映问题 | 引用通告(0) | 编辑

• 标签:数据库

上一篇:right\\left\\mid 函数的运用-----读取路径中的文件名 • 下一篇:如何用纯代码来控制WMP的播放

2009-6-1 15:02:52

Re:VB操作Access数据库方法

工程引用

Microsoft ActiveX Data Objects 2.1 Library

然后添加代码:

Private dbName As String '数据库名字

Private conn As ADODB.Connection '数据库连接 Private rs As ADODB.Recordset '搜索记录集 Private sqlString As String '搜索字符串

Private Sub Form_Load()

'获得数据库地址 dbName = App.Path

If Right(dbName, 1) <> \"\\\" Then dbName = dbName & \"\\\" dbName = dbName & \"zx.mdb\"

'连接有密码数据库

' Set conn = New ADODB.Connection ' conn.ConnectionString = _

' \"Provider=Microsoft.Jet.OLEDB.4.0;\" & _ ' \"Data Source=\" & dbName & \";\" & _

' \"Jet OLEDB:Database Password=\" & password

'连接无密码数据库

Set conn = New ADODB.Connection conn.ConnectionString = _

\"Provider=Microsoft.Jet.OLEDB.4.0;\" & _ \"Data Source=\" & dbName & \";\" & _ \"Persist Security Info=False\" conn.Open

''''''''''''''''''''''''''''''''''' '下面是一个例子,插入记录 '你可以随便改变sqlString '执行你自己的操作

''''''''''''''''''''''''''''''''''''

'插入新纪录

Sub InsertData()

sqlString = \"insert into txl (Name) values('\" & NewName & \"')\" Set rs = conn.Execute(sqlString, , adCmdText)

End Sub

Private Sub Form_Unload(Cancel As Integer)

'关闭数据库连接 rs.Close conn.Close End Sub

个人主页 | 引用 | 返回 | 删除 | 回复

2009-6-1 10:42:08

Re:VB操作Access数据库方法

在VB编程中通常要与数据库打交道,对于数据量较小的应用,一般选用

Access作为数据库,因为Access数据库比较简单,功能也比较齐全,数据的备份、拷贝都很方便,且程序发布时不需要额外单独安装其它的数据库管理软件。因此,在功能能够满足要求的条件下,Access数据库往往成为一些小型数据库软件的首选。

关于用VB操作Access库表的方法有多种,一般初学者往往会使用数据控件,许多资料上也大都以此作为操作Access数据库的起点来介绍,因为这个方法使用起来非常简单,但使用数据控件的方法在程序编码上往往不够灵活。现在介绍一下其它两种操作Access数据库的方法。

第一种:使用数据库对象

首先,要进行有关数据对象的声明,代码如下。

Dim MyWs As Workspace Dim MyDB As Database

Dim WordTab As Recordset

生成工作区,打开数据库,然后再根据需要打开相应的库表。

Set MyWs = DBEngine.CreateWorkspace?″″? ″Admin″? ″″? dbUseJet?

Set MyDB = MyWs.OpenDatabase?数据库名称? False? False? Set WordTab = MyDB.OpenRecordset?″表名″? dbOpenDynaset?

这种方法的优点是代码比较简单,要求的环境为DAO 2.5/3.51,其中表名可以换成SELECT语句,即根据条件打开所需要的记录集,这种方法可脱离数据控件,可以比较方便灵活地操作数据库表,增加了程序的灵活性。

提示:经过测试发现,这种方法只能打开Access97库表,对于Access2000库表却为力,会弹出库表格式不对的出错提示。另外,对数据环境的要求仍比较多。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务