2022年VB常用数据库连接方 .pdf
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 个字符串变量分别表示文件路径和文件名、数据库地址、 数据库名、 数据操作员用户名、操作员密码数据库名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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 也可以使用这段简易代码 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.Clos e 这个方法用来关闭你所代开的表,如果不使用这个方法也可以, 但是数据库仍然认为你在对标进行锁定,可造成数据库负担过重2、对数据进行筛选和排序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - = 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) 都是是可以的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - rs(3).Name 返回列名rs(3).Type 返回列的类型rs(3).Value 返回当前行的值rs.Fields.Count 返回列数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -