把网站的资料弄进来。。
VB6.0使用ADO连接数据库
一、ADO概述
ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。ADO 在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。之所以称为 ADO,是用了一个比较熟悉的暗喻,OLE 自动化接口。
OLE DB是一组“组件对象模型”(COM) 接口,是新的数据库低层接口,它封装了ODBC的功能,并以统一的方式访问存储在不同信息源中的数据。OLE DB是Microsoft UDA(Universal Data Access)策略的技术基础。OLE DB 为任何数据源提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等等。也就是说,OLE DB 并不局限于 ISAM、Jet 甚至关系数据源,它能够处理任何类型的数据,而不考虑它们的格式和存储方法。在实际应用中,这种多样性意味着可以访问驻留在 Excel 电子数据表、文本文件、电子邮件/目录服务甚至邮件服务器,诸如 Microsoft Exchange 中的数据。但是,OLE DB 应用程序编程接口的目的是为各种应用程序提供最佳的功能,它并不符合简单化的要求。您需要的API 应该是一座连接应用程序和OLE DB 的桥梁,这就是 ActiveX Data Objects (ADO)。
二、VB6.0实现方法
本文将ADO封装为clsADO类模块(本文附件),具体定义如下:
属性:(无)
方法:
Sub SetConnectionString(ByVal ConnectionString As String)
设置连接数据的连接字符串,亦可在OpenDB方法中指定。
参数:
ConnectionString:String类型。连接字符串
Function OpenDB(Optional ByVal ConnectionString As String) As Boolean
传入连接字符串,建立数据库连接,缺省使用SetConnectString方法指定的连接字符串。
参数:
ConnectionString:String类型。可选的,缺省为SetConnectString方法指定的连接字符串
返回:
Boolean类型。如果成功建立数据库连接,则返回True。否则,返回False。
Sub CloseDB()
关闭数据库连接。
Function ExecuteCommand(ByVal SQLString As String) As Boolean
执行指定的非查询SQL语句,如INSERT,UPDATE,DELETE。
参数:
SQLString:String类型。非查询SQL语句。
返回:
Boolean类型。如果SQL语句成功执行,则返回True。否则,返回False。
Function CreateRecordset(ByVal SQLString As String) As ADODB.Recordset
返回指定查询SQL语句的记录集。
参数:
SQLString:String类型。查询字符串。
返回:
Recordset引用类型。如果SQL语句成功执行,则返回Recordset对象。否则,返回Nothing。
Sub SetAccessDBName(ByVal DBName As String, Optional ByVal Password As String)
设置连接Access数据库的连接字符串。
参数:
DBName:String类型。Access数据库的绝对路径。
Password:String类型。可选的,Access数据库的密码。
Sub SetSQLDBName(ByVal Host As String, ByVal DBName As String, ByVal UserID As String, ByVal Pwd As String)
设置连接SQLServer数据库的连接字符串。
参数:
Host:String类型。SQLServer主机的域名或IP地址。
DBName:String类型。要连接的数据库名。
UserID:String类型。登录SQLServer的用户名。
Password:String类型。UserID对应的密码。
Function SQLFilter(ByRef s As String) As String
返回过滤后的SQL语句。
参数:
s:String类型。要过滤得SQL语句
返回:
String类型。过滤后的SQL语句
事件:(无)
具体使用方法:
首先引入ADO库文件,即在工程中加入对ADO库文件的引用。具体方法为:在VB 6.0集成开发环境中选择“工程”菜单,再点击“引用”菜单项,在弹出的“引用”对话框中选中“Microsoft ActiveX Data Objects 2.8 Library”,单击“确定”即可。
然后加入本文提供clsADO类模块。
三、Access数据库示例
使用Access 2000(或更高版本)创建Access数据库(保存为C:\Example.mdb)。其中包含表Student。
表Student结构如下:
No:文本(10),主键。
Name:文本(10)
Age:数字(整型)
在VB6.0中建立标准EXE工程,依照本文所述添加ADO引用,以及clsADO类模块。
右键单击Form1选择[查看代码],复制如下代码
Option Explicit
Private Sub Form_Load()
Me.AutoRedraw = True
Dim ADO As New clsADO '声明ADO对象
ADO.SetAccessDBName "C:\Example.mdb" '刚才创建的Access数据库
If ADO.OpenDB() Then
'成功打开数据库
ADO.ExecuteCommand "INSERT INTO Student VALUES('2004240010', 'Wayne', 21)"
'执行 无返回的SQL语句
Dim rs As Recordset '声明 Recordset对象
Set rs = ADO.CreateRecordset("SELECT * FROM Student")
'获取查询结果
Print "记录数:"; rs.RecordCount '在窗体输出 查询结果的记录条数
While rs.EOF = False '如果EOF为真,则表示"游标"已经在最后一条记录后面。
Print "-----------"
Print "No:"; rs.Fields(0)
Print "Name:"; rs.Fields(1)
Print "Age:"; rs.Fields(2)
Print "-----------"
rs.MoveNext '使"游标"后移
Wend
ADO.ExecuteCommand "DELETE FROM Student WHERE [Name] = 'Wayne'"
ADO.CloseDB '关闭数据库
Else
Print "打开数据库失败"
End If
End Sub
四、SQLServer数据库示例
建立数据库
1、 在SQL Server 中建立 名为MyDB的数据库
2、 在查询分析器中执行如下脚本:
use MyDB
create table Student([No] nvarchar(10) not null primary key, [Name] nvarchar(10) not null, Age smallint not null)
insert into Student values('2004181002', 'Toni', 21)
3、 在企业管理器中 更改sa密码:
[安全性]->[登录]
双击[sa] 在密码框内 输入 123456 单击[确定] 再次输入 123456
在VB6.0中建立标准EXE工程,依照本文所述添加ADO引用,以及clsADO类模块。
右键单击Form1选择[查看代码],复制如下代码
Option Explicit
Private Sub Form_Load()
Me.AutoRedraw = True
Dim ADO As New clsADO '声明ADO对象
ADO.SetSQLDBName "127.0.0.1", "MyDB", "sa", "123456" '连接本机 数据库MyDB 用户名sa 密码123456
If ADO.OpenDB() Then
'成功打开数据库
ADO.ExecuteCommand "INSERT INTO Student VALUES('2004240010', 'Wayne', 21)"
'执行 无返回的SQL语句
Dim rs As Recordset '声明 Recordset对象
Set rs = ADO.CreateRecordset("SELECT * FROM Student")
'获取查询结果
Print "记录数:"; rs.RecordCount '在窗体输出 查询结果的记录条数
While rs.EOF = False '如果EOF为真,则表示"游标"已经在最后一条记录后面。
Print "-----------"
Print "No:"; rs.Fields(0)
Print "Name:"; rs.Fields(1)
Print "Age:"; rs.Fields(2)
Print "-----------"
rs.MoveNext '使"游标"后移
Wend
ADO.ExecuteCommand "DELETE FROM Student WHERE [Name] = 'Wayne'"
ADO.CloseDB '关闭数据库
Else
Print "打开数据库失败"
End If
End Sub