VC中利用ADO访问数据库的一个简单实例

10 篇文章 1 订阅

1、创建实例工程

创建一个MFC基于对话框的用用程序,工程名为Ado。界面布局如图1所示

 

1 VC连接数据库界面布局示意图 

2、导入库文件 

使用ADO前必须在工程的stdafx.h文件最后用直接引入符号#import引入ADO库文件,以使编译器能正确编译。代码如下:

// 加入ADO支持库
#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")    

ADO类的定义是作为一种资源存储在ADO DLL(msado15.dll)中,在其内部称为类型库。

类型库描述了自治接口,以及C++使用的COM vtable接口。

当使用#import指令时,在运行时Visual C++需要从ADO DLL中读取这个类型库,

并以此创建一组C++头文件。这些头文件具有.tli .tlh扩展名,#import引入ADO库文件的代码编译后,在项目的目录下生成了这两个文件。在C++程序代码中调用的ADO类要在这些文件中定义。

程序的第er行指示ADO对象不使用名称空间,在有些应用程序中,

由于应用程序中的对象与ADO中的对象之间可能会出现命名冲突,所以有必要使用名称空间。

如果要使用名称空间,则可把第三行程序修改为: rename_namespace("AdoNS")

行代码将ADO中的EOF(文件结束)更名为adoEOF,因为文件的结尾也是以EOF结尾的,是为了避免与定义了自己的EOF的其他库冲突。 至于改为什么名字,可以根据自己的命名习惯自己确定。 

3、初始化COM环境

OLE DB 是基于COM技术编写的,ADOOLE DB基础之上的用户程序,

OLE DB是一个COM组件,在访问COM组件的时候需要初始化COM库,方法如下:

1   ::CoInitialize(NULL); //初始化OLE/COM库环境

//对数据库的访问在上下代码之间写,下面第三步就应该写在这里

::CoUninitialize();//既然初始化了环境,当然一定要记得释放他了

2)也可以调用MFC全局函数

AfxOleInit(); 

4、 给查询按钮添加消息响应事件,代码如下:

void CAdoDlg::OnBtnQuery()
{
// 初始化OLE/COM库环境
CoInitialize(NULL);
 
//_ConnectionPtr     智能指针定义一个连接对象同时对这个对象进行初始化
_ConnectionPtr	 pConn(__uuidof(Connection));
//记录集的指针对象同上
_RecordsetPtr pRst(__uuidof(Recordset));
 
// 打开本地Access库Demo.mdb
//这里说明一下Demo.mdb     是      一个Access数据库文件表名DemoTable 两个字段姓名和年龄
//存放在系统的当前目录(和源文件至于同一目录)
pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb","","",adModeUnknown);
 
pRst=pConn->Execute(_T("SELECT * FROM DemoTable"),NULL,adCmdText);
 
while(!pRst->adoEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect(_T("Name")));
pRst->MoveNext();
//((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect(_T("Age")));
//pRst->MoveNext();
}
//关闭记录集
pRst->Close();
//关闭连接
pConn->Close();
//释放智能指针在COM接口上的引用计数注意是.不是->
pRst.Release();
pConn.Release();
// 卸载OLE/COM库环境
CoUninitialize();
}

注:注意需要添加一个数据库文件

5、查询结果

点击查询,列表框中显示数据库文件中存放的数据集。

示意图如图2所示

 

图2 查询结果名称示意图

 

图3 查询结果年龄示意图

 至此,利用ADO访问数据库的过程已经结束,可以访问数据库中的数据。后续再补充对数据库文件中的数据进行操作的实现。


说明:本地的数据库文件Demo.mdb Excel打开如图三所示:

 

图4 数据库中存放数据示意图

 和程序执行结果进行比较可以发现数据的顺序是不一致的,名称按照首字母,数字按照递增的顺序,这个问题慢慢再研究。 

待完善


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法哥2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值