MFC通过ADO连接数据库
来源:互联网 发布:photo域名 编辑:程序博客网 时间:2024/06/06 21:59
http://blog.chinaunix.net/uid-24585655-id-2125520.html
MSDN中提供MFC的连接数据库的方法大约有三种方法一是CDatabase类(ODBC),一是DAO,另一是OLE DB,MSDN上推荐的方法是ODBC或者OLE DB方式。
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)。使用ADO前必须在工程的stdafx.h头文件里用直接引入符号#import引入ADO库文件,以使编译器能正确编译。
ADO库是一组COM动态库,这意味应用程序在调用ADO前,必须初始化OLE/COM库环境。在MFC应用程序里,一个比较好的方法是在应用程序主类的InitInstance成员函数里初始化OLE/COM库环境。
然后ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口
下面是编程步骤:
1、在StdAfx.h加入:
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
if (!AfxOleInit())
{
AfxMessageBox("OLE init Error");
return FALSE;
}
CoInitialize(NULL);//
CoInitializeEx(NULL);
3、我只介绍我用到的接口,上面是初始化系统环境,下面声明一个接口
_ConnectionPtr pConn;
const _bstr_t strSRC= "Driver={SQL Server};PROVIDER=SQLOLEDB;Data Source=SVCTAG-D76XZ2X;Database=bridge;Uid=test;Pwd=test;";
if (FAILED(pConn.CreateInstance("ADODB.Connection")))
{
AfxMessageBox("Create Instance failed!");
exit(0);
}
try{
pConn->Open(strSRC,"","",-1);
}
catch (_com_error &e)
{
AfxMessageBox(e.Description());
exit(0);
}
int CBridgeSql::execSql(CString sql)
{
COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
try
{
pConn->Execute(_bstr_t(sql),&vtOptional,adCmdText);
}catch(_com_error &e){
TRACE(sql);
AfxMessageBox(e.Description());
return -1;
}
return 0;
}
int CBridgeSql::execSql(CString sql,_RecordsetPtr &pRst)
{
COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
try
{
pRst=pConn->Execute(_bstr_t(sql),&vtOptional,adCmdText);
}catch(_com_error &e){
TRACE(sql);
AfxMessageBox(e.Description());
return -1;
}
return 0;
}
_RecordsetPtr pRst(__uuidof(Recordset));
sql_cmd.Format("select * from bridge");
execSql(sql_cmd,pRst);
while(!pRst->adoEOF)
{
pRst->GetCollect("bridge_id").intVal;
CString temp;
temp.Format((_bstr_t)pRst->GetCollect("name"));
}
- MFC通过ADO连接数据库
- MFC通过ADO连接SQL SERVER数据库
- MFC通过ADO连接ACCESS2010数据库
- MFC通过ADO连接Oracle数据库
- MFC ADO连接数据库
- VC++中使用MFC通过ADO连接数据库方法小结
- VC++中使用MFC通过ADO连接数据库方法小结
- VC++中使用MFC通过ADO连接数据库
- VS2010下MFC通过ADO连接Access数据库
- MFC中用Ado连接数据库
- MFC中用Ado连接数据库
- MFC中用Ado连接数据库
- MFC中用Ado连接数据库
- MFC中用Ado连接数据库
- MFC中用Ado连接数据库
- MFC中用Ado连接数据库
- MFC中用ADO连接数据库
- MFC中用ADO连接数据库
- android parcelable接口,数据打包
- 激活sa用户
- 劝君惜取少年时
- Android项目优化Android lint
- 开源缺陷管理系统PPM Bug v1.7 云版本发布
- MFC通过ADO连接数据库
- FLEX:给页面添加滚动条
- java提取字符串中汉字、数字、字母
- indexOf()指出字符串的所处位置(整数)
- AJAX状态一览表
- mac下Eclipse代码自动补全设置
- 直角三角形的边问题
- Full Flush C语言实现
- [读书笔记] Inside C++ Object笔记(第4章: Function语意学)