首页 VC++中MFC用Ado连接数据库小结

VC++中MFC用Ado连接数据库小结

举报
开通vip

VC++中MFC用Ado连接数据库小结VC++中MFC用Ado连接数据库小结VC++中使用MFC通过ADO连接数据库方法小结(不包括异常的捕捉)这里主要讲MFC与SQL2000数据库的连接。在StdAfx.h头文件中加入此旬子#import"c:\programfiles\commonfiles\system\ado\msado15.dll"、no_namespacerename("EOF","adoEOF")在App类的InitInstance()函数中加入::CoInitialize(NULL);//表示com库的初始化鼠标右键点击App类名添加虚...

VC++中MFC用Ado连接数据库小结
VC++中MFC用Ado连接数据库小结VC++中使用MFC通过ADO连接数据库方法小结(不包括异常的捕捉)这里主要讲MFC与SQL2000数据库的连接。在StdAfx.h头文件中加入此旬子#import"c:\programfiles\commonfiles\system\ado\msado15.dll"、no_namespacerename("EOF","adoEOF")在App类的InitInstance()函数中加入::CoInitialize(NULL);//表示com库的初始化鼠标右键点击App类名添加虚函数ExitInstance(),在其中加入代码::CoUninitialize();//释放com库。获取连接字符串。最简单的方法就是新建一个.txt文件,将其后缀名改为udl,双击它,在“提供程序〃标签页中选择“MicrosoftOLEDBProvidefoSqlServer”然后在“连接〃标签页选择填写服务器、数据库、登陆方式等信息,最后按“确定”。连接完成之后,将其用写字板打开,第三行信息,如“Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=RuleDB_Data;DataSource=PYE”即为连接字符串。注意,若数据库位于本机,在选择填写服务器一栏可直接填写(local),记得一定要加括号。连接数据库在这里引入一个编写好的封装类: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>1000classADOConn:publicCObject{public://添加一个指向Connection对象的指针:_ConnectionPtrm_pConnection;//添加一个指向Recordset对象的指针:_RecordsetPtrm_pRecordset;charerror[1024];public:_ConnectionPtr&GetConnPtr(){returnm_pConnection;}RecordsetPtr&GetRecoPtr(){returnm_pRecordset;}public://事务回滚BOOLRollbackTrans();〃递交事务BOOLCommitTrans();//事务开始BOOLBeginTrans();BOOLadoBOF();//头BOOLadoEOF();//尾BOOLMoveNext();//下一个BOOLCloseTable();//关闭表BOOLCloseADOConnection();//关闭连接BOOLGetCollect(LPCTSTRName,CString&lpDest);/获取某个字段的值〃执行SQL语旬包含updatedeleteinsertBOOLExecuteSQL(LPCTSTRlpszSQL);//初始化连接数据库BOOLOnInitADOConn(LPCTSTRConnStr);//执行select语旬获取记录集_RecordsetPtr&GetRecordSet(LPCTSTRlpszSQL);ADOConn();virtual~ADOConn();};#endif//!defined(AFX_ADOCONN_H__2B491720_FA04_4800_B616_219E55ABEA46__INCLUDED_)classCADOException:publicCException{public://ConstructorCADOException(char*pchMessage);public:~CADOException(){}CStringm_strMessage;virtualBOOLGetErrorMessage(LPTSTRlpstrErrqrUINTnMaxError,PUINTpnHelpContext=NULL);private:intm_nError;};ADOConn类的cpp文件:#include"stdafx.h"#include"ADOConn.h"#ifdefDEBUG#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#definenewDEBUG_NEW#endif////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////ADOConn::ADOConn(){memset(error,0,1024);}ADOConn::~ADOConn(){}////////////////////////////////////////////////////////////////////////CADOExceptionClass//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////////////////////////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{wsprintf(text,"%serror#%d",(constchar*)m_strMessage,m_nError);}strncpy(lpstrError,text,nMaxError-1);returnTRUE;}BOOLADOConn::OnInitADOConn(LPCTSTRConnStr)::CoInitialize(NULL);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);returnTRUE;}//捕捉异常catch(_com_errore){//显示错误信息TRACE(e.Description());//sprintf(error,"连接数据库失败请检查连接字符串\r\n当前连接字符串为:%s",ConnStr);//thrownewCADOException(error);thrownewCADOException('连接数据库失败');}〃执行SQL语旬包含updatedeleteinsertBOOLADOConn::ExecuteSQL(LPCTSTRIpszSQL){//_variant_tRecordsAffected;try{//Connection对象的Execute方法:(_bstr_tCommandText,//VARIANT*RecordsAffected,longOptions)//其中CommandText是命令字串,通常是SQL命令。//参数RecordsAffected是操作完成后所影响的行数//参数Options表示CommandText的类型:adCmdText文本命令;adCmdTable-表名//adCmdProc-存储过程;adCmdUnknown-未知m_pConnection->Execute(_bstr_t(lpszSQL),NULL,adCmdText);returntrue;}catch(_com_errore){TRACE(e.Description());//sprintf(error"\t执行SQL语旬失败\r\nSQL语旬为:%s",lpszSQL);//thrownewCADOException(error);thrownewCADOException('执行SQL语旬失败");}}〃执行SELECT语旬,获得结果集,结果集放在m_pRecordset中_RecordsetPtr&ADOConn::GetRecordSet(LPCTSTRlpszSQL){try{//创建记录集对象m_pRecordset.CreateInstance(__uuidof(Recordset));//取得表中的记录m_pRecordset->Open(_bstr_t(lpszSQL),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);}//捕捉异常catch(_com_errore){//显示错误信息TRACE(e.Description());//sprintf(error"\t执行SELECT语旬失败\r\nSELECT语旬为:%s”,lpszSQL);//thrownewCADOException(error);thrownewCADOException('执行SELECT语旬失败");}//返回记录集returnm_pRecordset;}〃获取某个字段的值BOOLADOConn::GetCollect(LPCTSTRName,CString&lpDest){VARIANTvt;try{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);elselpDest=HH;catch(_com_errore){TRACE(e.Description());sprintf(error「获取字段:%s值失败",Name);thrownewCADOException(error);}returnTRUE;}〃关闭数据库BOOLADOConn::CloseADOConnection(){try{m_pConnection->Close();}catch(_com_errore){TRACE(e.Description());sprintf(error,e.Description());thrownewCADOException(关闭数据库失败');returnTRUE;}〃关表BOOLADOConn::CloseTable(){try{m_pRecordset->Close();}catch(_com_errore){TRACE(e.Description());sprintf(error,e.Description());thrownewCADOException("关闭表失败');}returnTRUE;}〃下一个BOOLADOConn::MoveNext(){trym_pRecordset->MoveNext();}catch(_com_errore){TRACE(e.Description());sprintf(error,e.Description());thrownewCADOException('结果集移向下一个失败');}returnTRUE;}//尾BOOLADOConn::adoEOF(){returnm_pRecordset->adoEOF;}〃头BOOLADOConn::adoBOF(){returnm_pRecordset->BOF;}//事务开始BOOLADOConn::BeginTrans()try{m_pConnection->BeginTrans();}catch(_com_errore){TRACE(e.Description());sprintf(error,e.Description());thrownewCADOException("事务开始失败");}returnTRUE;}〃递交事务BOOLADOConn::CommitTrans(){try{m_pConnection->CommitTrans();}catch(_com_errore)TRACE(e.Description());sprintf(error,e.Description());thrownewCADOException('递交事务失败");}returnTRUE;}//事务回滚BOOLADOConn::RollbackTrans(){try{m_pConnection->RollbackTrans();}catch(_com_errore){TRACE(e.Description());sprintf(error,e.Description());thrownewCADOException('回滚事务失败");}returnTRUE;}
本文档为【VC++中MFC用Ado连接数据库小结】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_179289
暂无简介~
格式:doc
大小:14KB
软件:Word
页数:21
分类:
上传时间:2019-05-18
浏览量:0