Dim Cnn ,strDb ,Rst ,strCnn ,ilen '//定义变量
Set Cnn=CreateObject("ADODB.Connection") '//生成数据库连接对象
strCnn="Provider=Microsoft.ACE.OLEDB.12.0;Ole DB Services=-4;Data Source=D:\DB\C6DB.accdb" ' //将获得的连接字符串赋值到strCnn
Cnn.Open strCnn '//打开数据库
Set Rst=createObject("ADODB.Recordset") '//生成记录集对象,可以理解为一个列表
Rst.Open "select * from EMPART" ,Cnn 'EMPART数据库表
Do while Not Rst.EOF 'eof表示这个记录集的结束标识
For ilen=0 to 1
Select Case ilen
Case 0
strDb=strDb&Rst.Fields.Item(ilen)&" " '表示取取第一列
Case 1
strDb=strDb&"+ "&Rst.Fields.item(ilen) '表示取取第二列
End Select
Next
''也可以将for循环的内容换成如下:
''strDb=strDb&Rst.Fields("USERNAME")&"+"&Rst.Fields("NICKNAME")&"+"&Rst.Fields("USERPASS")&"+"&Rst.Fields("ROLE")&vbNewLine
Rst.MoveNext
LoopRst.Close
cnn.Close
msgbox strDb
执行效果图如下:
数据库中原来数据如下:
另外补充三个问题点,在编写过程中遇到的三个问题:
1、Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别
在通过ADO对Excel对象进行连接时(此时Excel则认为是一个数据源),需要配置对Excel数据源对应的连接串,这个连接串中包括了Provider信息(其实类似对数据库进行连接操作时,都需要指定连接字符串),以下是一行连接串源代码:
strConnString ="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" &strExcelFilePath & ";Extended Properties=Excel 12.0"
这里的Provider使用了Microsoft.ACE.OLEDB.12.0,其实除了Microsoft.ACE.OLEDB.12.0,还有Microsoft.Jet.OLEDB.4.0,它们俩者之间有什么联系和区别呢:
(1)共同点:都是做为连接Excel对象的接口引擎
(2)不同点:
对于不同的Excel版本,有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎)。Jet 引擎,可以访问 Office 97-2003,但不能访问 Office 2007。ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。
另外:Microsoft.ACE.OLEDB.12.0可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。
所以,在使用不同版本的office时,要注意使用合适的引擎。
2、数据库表名称一定要选择数据库里面表的名称,而不是数据库的名称。
3、如果要访问的数据库不在本地,可以通过:将数据库所在的电脑通过设置共享,再映射到本地电脑,就可以正常访问。