ADO(ActiveX Data Object,ActiveX数据对象)是继DAO、RDO之后微软新推出的最新的数据库连接技术,这里所示的都是采用ADO去连接数据库。常用的数据库有Access、SQL Server和Excel,下面做了连接方式的汇总,给出代码示意。
一、连接Access数据库
1、连接Access 2003数据库
‘连接名为test.mdb的数据库,读取其中的名为myuser的表中的数据,显示在MSHFlexGrid1中。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.path & "\test.mdb"
rs.Open "myuser", cn, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
2、连接Access 2007数据库
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & App.Path & "\" & "test.accdb;Persist Security Info=False"
rs.Open "select * from myuser", cn, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
3、连接设置了密码的Access 2003数据库
‘连接名为test.mdb的数据库,密码为111,读取其中的名为myuser的表中的数据。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & App.path & ”\test.mdb;Jet OLEDB:Database Password=111"
rs.Open "myuser", cn, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
二、连接SQL Server 2000数据库
1、用ODBC DSN(ODBC数据源)连接SQL server 2000
要想使用ODBC DSN访问SQL Server 2000数据库,就要先对ODBC数据源进行配置,步骤如下:
à在SQL的企业管理器中建立好名为test的数据库,其中有一个叫myuser的表à控制面板à管理工具à数据源(ODBC)à选择“用户DSN”选项卡à点“添加”à选中“SQL Server”,点“确定”à在“数据源名称”处根据自己的想法随便给目前正在建立的这个DSN取个名字,本例取为“TEST”;在“数据源描述”处写上一些提示信息,以便以后方便自己了解该DSN的用途;在“服务器”处写上你当要使用的SQL Server服务器,本例中为“ZHANG”à勾选“使用用户输入登录ID和密码的SQL Server验证”,并在“登录ID”和“密码”处填上在你安装SQL Server2000时设置的用户名和密码,本例为“sa”和“111”à勾选“更改默认的数据库为:”,在其中选中你要连接的数据库,本例为“test”数据库à默认选项直到“完成”à点“测试数据源”,若出现“测试成功!”,那么恭喜你,DSN配置成功了。配置好了DSN以后用下面的代码去连接数据库并将读取的数据显示在MSHFlexGrid1中。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "DSN=TEST;UID=sa;PWD=111"
rs.Open "myuser", cn, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
注意:使用ODBC DSN连接数据库有自身的一些弊端:(1)每台电脑都必须配置DSN,并且有可能还要安装ODBC驱动;(2)一旦修改了DSN,则用户就需要为每台电脑重新配置ODBC。因此,一般还是不采用DSN连接数据库。
2、不使用ODBC DSN连接SQL server 2000
(1)、使用DAO对象进行连接
Dim db as Database
Set ws = CreateWorkspace("","admin", "")
Set db = ws.OpenDatabase("",dbDriverNoPeompt,True,“drvier={SQL Server};server=ZHANG;database=test;UID=sa;PWD=111”)
(2)、使用ADO对象进行连接
‘连接名为test的数据库,读取其中的名为myuser的表中的数据,显示在MSHFlexGrid1中。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Driver=SQL Server;Server=ZHANG;UID=sa;PWD=111;database=test"
rs.Open "myuser", cn, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
3、使用OLEDB连接SQL server 2000
OLEDB是基于COM模型的数据库访问接口,是一种驱动程序级别的底层数据访问接口。它可以访问SQL Server,Access,Oracle,Excel,还可以访问文本文件、邮件服务器(Microsoft Exchange)等中的数据。OLEDB连接SQL Server2000,可以通过ADO对象(建立一个Connection对象后连接),也可以通过ADO控件(该控件即Adodc1,数据源为kfgl,在其属性窗口中或通过代码设置ConnectionString属性后连接)。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=SQLOLEDB.1;User ID=sa;Password=111;Initial Catalog=test;Data Source=."
rs.Open "myuser", cn, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
三、连接Excel数据表格
1、连接Excel 2003
‘Excel表格是test.xls,数据放在Sheet1表单中。将读取到的数据放到MSHFlexGrid1中显示。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=FALSE;data source=test.xls;extended properties=Excel 8.0"
rs.Open "select * from [Sheet1$]", cn, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
MSHFlexGrid1.ColWidth(0) = 10
2、连接Excel 2007
‘Excel表格是test.xlsx(Excel2007的文件格式为.xlsx),数据放在Sheet1表单中。将读取到的数据放到MSHFlexGrid1中显示。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=MSDASQL.1;Persist Security Info=FALSE;data source=test.xls;extended properties="DSN=Excel Files;DBQ=" & App.path & "\test.xlsx";DriverID=1046;FIL=Excel 8.0"
rs.Open "select * from [Sheet1$]", cn, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
MSHFlexGrid1.ColWidth(0) = 10
四、连接Oracle数据库
VB要连接Oracle数据库,首先要安装Visual Basic 6的SP6补丁,这样才能对Oracal有更好的支持。用ADO控件(即Adodc1,数据源为kfgl)进行连接,该控件的属性设置如下:CommandType设为1-adCmdText;RecordSource设为Select* from 数据库名.kf order by kf.列名;PassWord设为你想要的密码,如111;UserName设为System。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Cn.ConnectionString = “Provider=OraOLEDB.Oracle.1;Persist Security Info=False;UserID=用户名;Password=密码;DataSource=数据源”
Rs.Open “Select* from 数据库名.kf order by kf.列名”,cn