1、VB 使用 ADODB 操作数据库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$, DbN
2、ame$, DbUser$, DbPw$ 以上 5 个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码 FileName = App.Path persist security info =false;data source=“ Jet OLEDB:Database Password=“ Password=“ User ID=“ Data Source=“ Persist Security Info=True“ 其中: PASSWORD: 密码 User ID: 用户号 Data Source: 数据库名 Persist Security Info: Pr
3、ovider: 3)连接 VF 的 DBF 库: - CnStr = “PROVIDER=MSDASQL.1;Persist Security Info=False;Driver=Microsoft Visual FoxPro Driver;UID=“ SourceDB=“ SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;“ 4)连接 SQL 的数据库 - CnStr = “PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=“ pwd=“DRIVER=SQL Server
4、;DATABASE=“ WSID=GQSOFT;SERVER=“ Data Source=“ DATABASE=“ UID=“ 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 (即,向后
5、移动行坐标)而不能像其他方向,并且不能修改数据内容 rs.Open Sql, conn,1 虽然只加了个“1”,但这种方法可以向任何方向移动行坐标。 以下参数代表了这个可选值的含义 0 = adOpenForwardOnly (默认值)打开仅向前类型游标。 1 = adOpenKeyset 打开键集类型游标。 2 = adOpenDynamic 打开动态类型游标。 3 = adOpenStatic 打开静态类型游标。 虽然使用以上方法可以可以实现行坐标(游标)的任意移动,但是仍然无法写入数据。因此需要进一步的对 Open 方法进行完善 rs.Open Sql, conn, 1, 3 后面的 3
6、 是确定读写权限的 以下参数代表了这个可选值的含义 1 = adLockReadOnly (默认值)只读 不能改变数据。 2 = adLockPessimistic 保守式锁定(逐个) 在编辑时立即锁定数据源的记录。 3 = adLockOptimistic 开放式锁定(逐个) 只在调用 Update 方法时才锁定记录。 4 = adLockBatchOptimistic 开放式批更新 用于批更新模式(与立即更新模式相对) 。 2)读写数据 - 增加一行记录并对新记录的内容进行修改并保存可以如下写法 rs.AddNew 增加一行记录 rs(“.“)=“.“ 数据读写操作 . rs.UpDate
7、 保存写入资料,如果使用只读权限,则不能使用这个方法 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 列数据
8、Sql = “select * from 表名 where 列名 1=“ & 字段 & “ SQL 查询语句 以上为一个简单的筛选,表示打开的内容必须符合 列名 1=“ & 字段 & “的内容 需要注意的是,数据库列的类型必须匹配,比如字符串类型需要以单引号括起 而数字类型则不能用单引号括起 另外 SQL 语句还支持通配符,例如 列名 1 like %“ & 字段 & “%“ 表示包含 字段 在表达式中的匹配 ? _(下划线) 任何单一字符 * or % 零个或多个字符 # 任何单一数字(0 9) charlist 任何在字符表中的单一字符 !charlist 任何不在字符表中的单一字符 注:
9、根据数据库的不同?、_和*、% 的应用有所差别,比如 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“ 对查询结果进
10、行多维降序排列(速度奇慢,不推荐使用) 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 返回列数