好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

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方式访问数据库

MFC里用ADO方式连接数据库1.在stdafx.h文件中添加如下代码#import\\\no_namespace\\rename(\,\)用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msad
推荐度:
点击下载文档文档为doc格式
9kz8w7vdpa3xy6r95j4x
领取福利

微信扫码领取福利

微信扫码分享