VB使用ADODB操作数据库的常用方法

VB使用ADODB操作数据库的常用方法
复制代码
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={Microsoft 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  ' 返回列数
复制代码
分类: VB
好文要顶 关注我 收藏该文           
0
0
« 上一篇: 禁止修改IP地址工具及原理
» 下一篇: VB ListView 控件
posted @ 2011-05-11 16:08 御清风 阅读( 3330) 评论( 0) 编辑 收藏


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值