vs mfc ado连接mysql_MFC利用ADO技术访问数据库(c++)

本文介绍了如何在VS2012的MFC应用中使用ADO技术连接和访问MySQL数据库。通过导入msado15.dll库,创建并配置Connection、Command和Recordset对象,实现对数据库的查询操作。在COM库初始化后,设置ConnectionString,打开连接,执行SQL语句,遍历并显示查询结果,最后关闭连接和释放资源。
摘要由CSDN通过智能技术生成

开发平台VS2012

ODBC(Open Database Connectivity),开放数据库互连。ODBC是上个世纪八十年代末九十年代初出现的技术,它为编写关系数据库的客户软件提供了一种统一的接口。ODBC提供一个单一的API,可用于处理不同数据库的客户应用程序。使用ODBC API的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信。

DAO(Data Access Object),数据访问对象。DAO就是一组Microsoft Access/Jet数据库引擎的COM自动化接口。 DAO不像ODBC那样是面向C/C++程序员的,它是微软提供给Visual Basic开发人员的一种简单的数据访问方法,用于操纵Access数据库。

RDO(Remote Data Object),远程数据对象。由于RDO直接调用ODBC API(而不是像DAO那样通过Jet引擎),所以,可以为使用关系数据库的应用程序提供更好的性能。

051995e33b09e04d83d6e30b64e912c1.png

OLE DB,对象链接与嵌入数据库。 OLE DB在两个方面对ODBC进行了扩展。首先, OLE DB提供了一个数据库编程的COM接口;第二, OLE DB提供了一个可用于关系型和非关系型数据源的接口。 OLE DB的两个基本结构是OLE DB提供程序(Provider)和OLE DB用户程序(Consumer)。

ADO(ActiveX Data Object),ActiveX数据对象,它建立在OLE DB之上。ADO是一个OLE DB用户程序。使用ADO的应用程序都要间接地使用OLE DB。ADO简化了OLE DB,提供了对自动化的支持,使得像VBScript这样的脚本语言也能够使用ADO访问数据库。

76a17117ea53ca93d92617eb5f2da04a.png

ADO的三个核心对象

Connection对象

Connection对象表示了到数据库的连接,它管理应用程序和数据库之间的通信。 Recordset和Command对象都有一个ActiveConnection属性,该属性用来引用Connection对象。

Command对象

Command对象被用来处理重复执行的查询,或处理需要检查在存储过程调用中的输出或返回参数的值的查询。

Recordset对象

Recordset对象被用来获取数据。 Recordset对象存放查询的结果,这些结果由数据的行(称为记录)和列(称为字段)组成。每一列都存放在Recordset的Fields集合中的一个Field对象中。

首先创建一个MFC基于对话框的程序,然后添加一个列表框和一个按钮

将按钮的属性修改为如下

52087d0bbfd85995b481b013f12bf3b1.png

在vs中我们要利用ADO访问数据库我们首先需要导入一个ADO库,这个库是一个动态链接库

这个库的路径:

C:\Program Files\Common Files\System\ado\msado15.dll

我们需要在stdafx.h预编译头文件中导入这个库

代码如下

// stdafx.h : 标准系统包含文件的包含文件,

// 或是经常使用但不常更改的

// 特定于项目的包含文件

#pragma once

#ifndef VC_EXTRALEAN

#define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料

#endif

#include "targetver.h"

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的

// 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏

#define _AFX_ALL_WARNINGS

#include // MFC 核心组件和标准组件

#include // MFC 扩展

#include // MFC 自动化类

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "rsEOF")

#ifndef _AFX_NO_OLE_SUPPORT

#include // MFC 对 Internet Explorer 4 公共控件的支持

#endif

#ifndef _AFX_NO_AFXCMN_SUPPORT

#include // MFC 对 Windows 公共控件的支持

#endif // _AFX_NO_AFXCMN_SUPPORT

#include // 功能区和控件条的 MFC 支持

然后编译一下会出现下面的错误

267fe3f0bd879ccee3aa01fc4a5a2cfb.png

解决方案

生成->重新生成 就没问题了

然后双击对话框上面的查询按钮创建它的消息响应函数

OLE DB是基于COM技术编写的ADO是基于OLE DB基础之上,它是OLE DB用户程序,ADO也是一个COM组件

我们在使用COM组件的时候需要先初始化一个COM库要初始化COM库需要用到下面函数

void CAdoDlg::OnBnClickedBtnQuery()

{

// TODO: 在此添加控件通知处理程序代码

CoInitialize(NULL);//初始化COM库

CoUninitialize();//卸载COM库

}

使用完COM库后需要卸载COM库

接下来我们就开始访问数据库

void CAdoDlg::OnBnClickedBtnQuery()

{

// TODO: 在此添加控件通知处理程序代码

CoInitialize(NULL);//初始化COM库

_ConnectionPtr pConn(__uuidof(Connection));

//_ConnectionPtr是一个智能指针类

//__uuidof获取Connection接口的全局唯一标识符

//产生了一个Connection智能指针对象

_RecordsetPtr pRst(__uuidof(Recordset));

//产生一个记录集的智能指针对象

pConn->ConnectionString = _T("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Test;Data Source=ELITE");//存储连接字串的变量

pConn->Open("", "", "", adConnectUnspecified);

//打开到数据库的连接

pRst = pConn->Execute("select * from Table_1", NULL, adCmdText);

while(!pRst->rsEOF)

{

((CListBox *)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)(pRst->GetCollect("name")));

pRst->MoveNext();

}

pRst->Close();//关闭记录集

pConn->Close();//关闭连接

pRst.Release();

pConn.Release();

CoUninitialize();//卸载COM库

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值