ADO常用方法
下面是我所掌握的使用ADO对数据库操作的一些常用方法,主要是提供给初学者作为参考,有不对的地方请指正。如有补充不胜荣幸
准备工作========DimconnAsNewADODB.Connection'创建一个 Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行DimrsAsADODB.Recordset'创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用DimCnStrAsString, SqlAsString'创建两个字符串变量分别存放两个集合的SQL语句代码段1、装载数据库(不属于Recordset集合)=============DimFileNamw$, 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=" & DbPwConn.Open cnstr'使用 Connection 集合的 Open 方法 与数据库建立连接2、Recordset集合的常用方法=========================='1)打开一个表'------------Sql="select * from 表名"'SQL查询语句Setrs=NewADODB.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'返回列数