第一范文网 - 专业文章范例文档资料分享平台

VS2010中MFC的ADO方式访问数据库

来源:用户分享 时间:2025/11/5 10:18:27 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

MFC里用ADO方式连接数据库

1.在stdafx.h文件中添加如下代码

#import \ \\ no_namespace \\

rename (\, \)

用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,其中路径名可以根据自己系统安装的ADO支持文件的路径来自行设定。当编译器遇到#import语句时,它会为引用组件类型库中的接口生成包装类,#import语句实际上相当于执行了API涵数LoadTypeLib()。#import语句会在工程可执行程序输出目录中产生两个文件,分别为*.tlh(类型库头文件)及*.tli(类型库实现文件),它们分别为每一个接口产生智能指针,并为各种接口方法、枚举类型,CLSID等进行声明,创建一系列包装方法。语句no_namespace说明ADO对象不使用命名空间,rename (\\说明将ADO中结束标志EOF改为adoEOF,以避免和其它库中命名相冲突。

2. 定义_ConnectionPtr变量调用Connection对象的Open方法建立与服务器的连

接。

UpdateData(true);

//_ConnectionPtr m_pConnection;//声明一个Connection指针

HRESULT hr=m_pConnection.CreateInstance(\);//创建Connection对象

//定义初始化的连接参数

CString

strConnection=_T(\);//服务器名称为local

strConnection+=m_datasource;//数据库名称 strConnection+=\;

strConnection+=m_user; //登陆名 strConnection+=\;

strConnection+=m_password; //登陆密码

//把CString转换为 _bstr_t型 _bstr_t bstrSRC(strConnection);

//用try。。。catch()来捕获错误信息 try {

m_pConnection->Open(bstrSRC,\,\,adModeUnknown);//打开我们的链接库

MessageBox(_T(\登陆成功!\)); }

catch(_com_error &e) {

MessageBox(e.Description(),_T(\),MB_OK|MB_ICONINFORMATION); }

这样就连接上了我的数据库。

3. _RecordsetPtr智能指针,可以用来打开库内数据表,并可以对表内的记录、字段等进行各种操作。

——打开数据表。打开库内表名为xs的数据表,代码如下:

_RecordsetPtr m_pRecordset; _variant_t var;

CString strsql = _T(\);//具体执行的SQL语句 m_pRecordset =

m_pConnection->Execute(_bstr_t(strsql),NULL,adCmdText);//将查询数据导入m_pRecordset数据容器 //读取并显示记录 for(int i=0;i<3;i++) {

while(!m_pRecordset->adoEOF)//遍历列的记录 {

var = m_pRecordset->GetCollect(\);//获取当前记录指针所指的字段值

CString xh = (TCHAR*)(_bstr_t)var; //转换为CString型 var = m_pRecordset->GetCollect(\); CString name = (TCHAR*)(_bstr_t)var; var = m_pRecordset->GetCollect(\); CString age = (TCHAR*)(_bstr_t)var; //显示到listCtrl中

m_list.InsertItem(i,xh);

m_list.SetItemText(i,1,name); m_list.SetItemText(i,2,age); //UpdateData(false);

m_pRecordset->MoveNext();//移向下一条记录 } }

在BOOL CADOTest1Dlg::OnInitDialog()中添加listCtrl的初始化:

// TODO: 在此添加额外的初始化代码 CRect rect;

m_list.GetClientRect(&rect);

// 为列表视图控件添加全行选中和栅格风格

m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); // 为列表视图控件添加两列

m_list.InsertColumn(0, _T(\), LVCFMT_LEFT, rect.Width()/3, 0);//列索引,列标题,对齐方式,列宽,对应列表子项索引

m_list.InsertColumn(1, _T(\), LVCFMT_LEFT, rect.Width()/3, 1);

m_list.InsertColumn(2, _T(\), LVCFMT_LEFT, rect.Width()/3, 2);

4.数据库添加操作,编辑“添加”的消息响应函数:

void CADOTest1Dlg::OnBnClickedButton1() {

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

if(FAILED(m_pRecordset.CreateInstance(\))) {

return; }

try {

m_pRecordset->Open(_variant_t(_T(\)),_variant_t((IDispatch*)m_pConnection),adOpenKeyset,adLockOptimistic,adCmdTable);

}

catch(_com_error &e) {

MessageBox(e.Description(),_T(\),MB_OK); }

//存入数据

CString strSql = _T(\张曼玉','16')\); //具体的SQL语句 //将查询数据导入m_pRecordset m_pRecordset =

m_pConnection->Execute(_bstr_t(strSql),NULL,adCmdText); }

5.删除操作只需要将上述函数里的存入数据语句改为:

CString strSql = _T(\

搜索更多关于: VS2010中MFC的ADO方式访问数据库 的文档
VS2010中MFC的ADO方式访问数据库.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9kz8w7vdpa3xy6r95j4x_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top