VC++中MFC用Ado连接数据库小结文档格式.docx

上传人:b****4 文档编号:17182006 上传时间:2022-11-28 格式:DOCX 页数:8 大小:17.85KB
下载 相关 举报
VC++中MFC用Ado连接数据库小结文档格式.docx_第1页
第1页 / 共8页
VC++中MFC用Ado连接数据库小结文档格式.docx_第2页
第2页 / 共8页
VC++中MFC用Ado连接数据库小结文档格式.docx_第3页
第3页 / 共8页
VC++中MFC用Ado连接数据库小结文档格式.docx_第4页
第4页 / 共8页
VC++中MFC用Ado连接数据库小结文档格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

VC++中MFC用Ado连接数据库小结文档格式.docx

《VC++中MFC用Ado连接数据库小结文档格式.docx》由会员分享,可在线阅读,更多相关《VC++中MFC用Ado连接数据库小结文档格式.docx(8页珍藏版)》请在冰豆网上搜索。

VC++中MFC用Ado连接数据库小结文档格式.docx

PersistSecurityInfo=False;

InitialCatalog=RuleDB_Data;

DataSource=PYE”即为连接字符串。

注意,若数据库位于本机,在选择填写服务器一栏可直接填写(local),记得一定要加括号。

4.连接数据库

在这里引入一个编写好的封装类:

ADOConn。

该类封装了连接数据库,对数据库进行添加、删除、修改操作及获取查询记录集操作的方法。

用户可直接使用,这个类的头文件和cpp文件内容将在本文最后给出。

在一个工程里加入该类的方法为:

把该类的头文件和cpp文件拷贝到工程所在的文件夹里。

然后在工程的工作区选择Project->

AddtoProject->

Files,将这两个文件选择加入。

之后,就可以在程序里应用这个类了。

首先在要用到数据库的类的头文件里设一个该类的对象,即加入代码:

ADOConnm_Ado;

注意:

记得要先在最前面加入#include"

ADOConn.h"

在应用这个对象对数据库进行操作之前,先对其初始化:

m_Ado.OnInitADOConn(strConnect);

其中strConnect即为上面获取的连接字符串。

若要获取数据库中的部分记录集,用m_Ado.GetRecordSet(strSql);

其中strSql中存放查询语句,查询结果存放于m_Ado.m_pRecordset中,然后可用GetCollect()函数挨个获取所有符合条件的记录的各个字段的值。

用完后记得用m_Ado.m_pRecordset.Close()关闭记录集。

添加、修改、删除操作,均用m_Ado.ExecuteSQL(strSql);

语句完成。

此外,若同时需要多种记录集,则还需在要用到数据库的类的头文件里添加记录集的对象,即_RecordsetPtrm_pRecordset;

m_pRecordset在用之前也需初始化,初始化语句为:

m_pRecordset.CreateInstance(__uuidof(Recordset));

,同样的,每回记录集用完之后也得用Close()函数关闭。

5.若在数据库应用程序编译时遇到102个错误,则可把Debug文件夹删了重新编译即可。

ADOConn类的头文件:

#if!

defined(AFX_ADOCONN_H__2B491720_FA04_4800_B616_219E55ABEA46__INCLUDED_)

#defineAFX_ADOCONN_H__2B491720_FA04_4800_B616_219E55ABEA46__INCLUDED_

#if_MSC_VER>

1000

#pragmaonce

#endif//_MSC_VER>

classADOConn:

publicCObject

{

public:

//添加一个指向Connection对象的指针:

_ConnectionPtrm_pConnection;

//添加一个指向Recordset对象的指针:

_RecordsetPtrm_pRecordset;

charerror[1024];

_ConnectionPtr&

GetConnPtr() 

{returnm_pConnection;

}

_RecordsetPtr&

GetRecoPtr() 

{returnm_pRecordset;

//事务回滚

BOOLRollbackTrans();

//递交事务

BOOLCommitTrans();

//事务开始

BOOLBeginTrans();

BOOLadoBOF();

//头

BOOLadoEOF();

//尾

BOOLMoveNext();

//下一个

BOOLCloseTable();

//关闭表

BOOLCloseADOConnection();

//关闭连接

BOOLGetCollect(LPCTSTRName,CString&

lpDest);

//获取某个字段的值

//执行SQL语句包含updatedeleteinsert

BOOLExecuteSQL(LPCTSTRlpszSQL);

//初始化连接数据库

BOOLOnInitADOConn(LPCTSTRConnStr);

//执行select语句获取记录集

GetRecordSet(LPCTSTRlpszSQL);

ADOConn();

virtual~ADOConn();

};

#endif//!

classCADOException:

publicCException

//Constructor

CADOException(char*pchMessage);

~CADOException(){}

CStringm_strMessage;

virtualBOOLGetErrorMessage(LPTSTRlpstrError,UINTnMaxError,

PUINTpnHelpContext=NULL);

private:

intm_nError;

ADOConn类的cpp文件:

#include"

stdafx.h"

#ifdef_DEBUG

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#definenewDEBUG_NEW

#endif

//////////////////////////////////////////////////////////////////////

//Construction/Destruction

ADOConn:

ADOConn()

memset(error,0,1024);

~ADOConn()

//CADOExceptionClass

CADOException:

CADOException(char*pchMessage)

m_strMessage=pchMessage;

m_nError=GetLastError();

BOOLCADOException:

GetErrorMessage(LPTSTRlpstrError,UINTnMaxError,PUINTpnHelpContext/*=NULL*/)

chartext[200];

if(m_nError==0)

wsprintf(text,"

%serror"

(constchar*)m_strMessage);

else

%serror#%d"

(constchar*)m_strMessage,m_nError);

strncpy(lpstrError,text,nMaxError-1);

returnTRUE;

BOOLADOConn:

OnInitADOConn(LPCTSTRConnStr)

try

//创建Connection对象

m_pConnection.CreateInstance("

ADODB.Connection"

);

//设置连接字符串,必须是BSTR型或者_bstr_t类型

_bstr_tstrConnect=_bstr_t(ConnStr);

//"

Provider=SQLOLEDB;

Server=127.0.0.1;

Database=EventLogg;

uid=event;

pwd=event;

"

;

m_pConnection->

Open(strConnect,"

adModeUnknown);

//捕捉异常

catch(_com_errore)

//显示错误信息

TRACE(e.Description());

//sprintf(error,"

连接数据库失败请检查连接字符串\r\n当前连接字符串为:

%s"

ConnStr);

//thrownewCADOException(error);

thrownewCADOException("

连接数据库失败"

ExecuteSQL(LPCTSTRlpszSQL)

//_variant_tRecordsAffected;

//Connection对象的Execute方法:

(_bstr_tCommandText,

//VARIANT*RecordsAffected,longOptions)

//其中CommandText是命令字串,通常是SQL命令。

//参数RecordsAffected是操作完成后所影响的行数,

//参数Options表示CommandText的类型:

adCmdText-文本命令;

adCmdTable-表名

//adCmdProc-存储过程;

adCmdUnknown-未知

Execute(_bstr_t(lpszSQL),NULL,adCmdText);

returntrue;

\t执行SQL语句失败\r\nSQL语句为:

lpszSQL);

执行SQL语句失败"

//执行SELECT语句,获得结果集,结果集放在m_pRecordset中

ADOConn:

GetRecordSet(LPCTSTRlpszSQL)

//创建记录集对象

m_pRecordset.CreateInstance(__uuidof(Recordset));

//取得表中的记录

m_pRecordset->

Open(_bstr_t(lpszSQL),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

\t执行SELECT语句失败\r\nSELECT语句为:

执行SELECT语句失败"

//返回记录集

returnm_pRecordset;

GetCollect(LPCTSTRName,CString&

lpDest)

VARIANTvt;

vt=m_pRecordset->

GetCollect(Name);

/*_bstr_tbstr=(_bstr_t)vt;

if(lpDest!

="

strcpy(lpDest,bstr);

}*/

if(vt.vt!

=VT_NULL)

lpDest=(LPCSTR)_bstr_t(vt);

else

lpDest="

catch(_com_errore)

sprintf(error,"

获取字段:

%s值失败"

Name);

thrownewCADOException(error);

//关闭数据库

CloseADOConnection()

Close();

sprintf(error,e.Description());

关闭数据库失败"

//关表

CloseTable()

关闭表失败"

MoveNext()

MoveNext();

结果集移向下一个失败"

adoEOF()

returnm_pRecordset->

adoEOF;

adoBOF()

BOF;

BeginTrans()

BeginTrans();

catch(_com_errore)

事务开始失败"

}

//递交事务

CommitTrans()

CommitTrans();

递交事务失败"

RollbackTrans()

RollbackTrans();

回滚事务失败"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1