ado方式操作数据库类.docx

上传人:b****5 文档编号:12565904 上传时间:2023-04-20 格式:DOCX 页数:7 大小:17.15KB
下载 相关 举报
ado方式操作数据库类.docx_第1页
第1页 / 共7页
ado方式操作数据库类.docx_第2页
第2页 / 共7页
ado方式操作数据库类.docx_第3页
第3页 / 共7页
ado方式操作数据库类.docx_第4页
第4页 / 共7页
ado方式操作数据库类.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

ado方式操作数据库类.docx

《ado方式操作数据库类.docx》由会员分享,可在线阅读,更多相关《ado方式操作数据库类.docx(7页珍藏版)》请在冰豆网上搜索。

ado方式操作数据库类.docx

ado方式操作数据库类

ado方式操作数据库类

VC/MFC数据库新任版主zyq5945(竹叶青)在数据库版开设帖子整理的一些ADO数据库入门与例子,为了表示支持我在其中回复了一个自己平时用的ado操作数据库的类。

怎奈论坛对回帖字数有限制,结果只贴了头文件......不过竹叶青版主邀请我把这个类整理到博客里以便分享,我觉得这个办法不错。

不过既然要整理到博客里就应该更正式一些,所以花些时间规范了一下这个类,并且制作了一个简单的使用范例,也算是对竹版的支持,对数据库版的一点小小的贡献吧。

好久没写博客了,其实应该多说两句介绍一下这个类和其简单的使用。

不过自己在数据库方面确实知之甚少,这个类其实也是抄来的,只不过在自己的使用过程中“本土化”了一下,呵呵。

所以就不班门弄斧了,直接上代码吧,希望能对有志于涉足于数据库应用技术的同僚们有所帮助,按竹版的话说算是“入门实例”吧。

使用范例本例中操作的数据库为ACCESS2003,操作方式为本地连接,数据库带密码类实现代码头文件[cpp]viewplaincopy#pragmaonce#include"math.h"#import"MSADO15.DLL"rename_namespace("ADOWE")rename("EOF","EndOfFile")usingnamespaceADOWE;classCDBAdo{public:

_CommandPtrm_ptrCommand;//命令对象_RecordsetPtrm_ptrRecordset;//记录集对象_ConnectionPtrm_ptrConnection;//数据库对象CStringm_strConnect,//连接字符串m_strErrorMsg;//错误信息public:

CDBAdo(void);~CDBAdo(void);voidDetectResult(HRESULThResult);voidRecordErrorMsg(_com_errorcomError);CStringGetLastError(){returnm_strErrorMsg;}boolCreateInstance();boolSetConnectionString(CStringstrDriver,CStringstrIP,WORDwPort,CStringstrCatalog,CStringstrUserID,CStringstrPassword);boolSetConnectionString(CStringstrDriver,CStringstrDataSrc,CStringstrPassword);boolOpenConnection();boolCloseConnection();boolIsConnecting();voidClearAllParameters();voidAddParamter(LPCTSTRlpcsrName,ADOWE:

:

ParameterDirectionEnumDirection,ADOWE:

:

DataTypeEnumType,longlSize,_variant_t&vtValue);voidSetSPName(LPCTSTRlpcsrSPName);boolExecuteCommand(boolbIsRecordset);boolExecute(LPCTSTRlpcsrCommand);longGetReturnValue();boolOpenRecordset(char*szSQL);boolCloseRecordset();boolIsRecordsetOpened();boolIsEndRecordset();voidMoveToNext();voidMoveToFirst();voidMoveToLast();longGetRecordCount();boolGetFieldValue(LPCTSTRlpcsrFieldName,WORD&wValue);boolGetFieldValue(LPCTSTRlpcsrFieldName,CString&strValue);boolGetFieldValue(LPCTSTRlpcsrFieldName,INT&nValue);boolGetFieldValue(LPCTSTRlpcsrFieldName,BYTE&bValue);boolGetFieldValue(LPCTSTRlpcsrFieldName,LONG&lValue);boolGetFieldValue(LPCTSTRlpcsrFieldName,DWORD&dwValue);boolGetFieldValue(LPCTSTRlpcsrFieldName,UINT&ulValue);boolGetFieldValue(LPCTSTRlpcsrFieldName,DOUBLE&dbValue);boolGetFieldValue(LPCTSTRlpcsrFieldName,__int64&llValue);boolGetFieldValue(LPCTSTRlpcsrFieldName,COleDateTime&Time);boolGetFieldValue(LPCTSTRlpcsrFieldName,bool&bValue);};实现文件[cpp]viewplaincopy#include"StdAfx.h"#include"DBAdo.h"CDBAdo:

:

CDBAdo(void){m_strConnect=_T("");m_strErrorMsg=_T("");//初始化COMCoInitialize(NULL);}CDBAdo:

:

~CDBAdo(void){//关闭连接CloseConnection();//释放对象if(m_ptrCommand!

=NULL)m_ptrCommand.Release();if(m_ptrRecordset!

=NULL)m_ptrRecordset.Release();if(m_ptrConnection!

=NULL)m_ptrConnection.Release();}boolCDBAdo:

:

CreateInstance(){//创建对象m_ptrCommand.CreateInstance(__uuidof(Command));m_ptrRecordset.CreateInstance(__uuidof(Recordset));m_ptrConnection.CreateInstance(__uuidof(Connection));if(m_ptrCommand==NULL){m_strErrorMsg=_T("数据库命令对象创建失败");returnfalse;}if(m_ptrRecordset==NULL){m_strErrorMsg=_T("数据库记录集对象创建失败");returnfalse;}if(m_ptrConnection==NULL){m_strErrorMsg=_T("数据库连接对象创建失败");returnfalse;}//设置变量m_ptrCommand->CommandType=adCmdStoredProc;returntrue;}voidCDBAdo:

:

DetectResult(HRESULThResult){if(FAILED(hResult))_com_issue_error(hResult);}voidCDBAdo:

:

RecordErrorMsg(_com_errorcomError){_bstr_tbstrDescribe(comError.Description());m_strErrorMsg.Format(TEXT("ADO错误:

0x%8x,%s"),comError.Error(),(LPCTSTR)bstrDescribe);}boolCDBAdo:

:

SetConnectionString(CStringstrDriver,CStringstrIP,WORDwPort,CStringstrCatalog,CStringstrUserID,CStringstrPassword){CStringstrProvider,strPWD,strUID,strData,strDataSrc;strProvider.Format(_T("Provider=%s;"),strProvider);strPWD.Format(_T("Password=%s;"),strPassword);strUID.Format(_T("UserID=%s;"),strUserID);strData.Format(_T("InitialCatalog=%s;"),strCatalog);strDataSrc.Format(_T("DataSource=%s,%ld;"),strIP,wPort);//构造连接字符串m_strConnect=strProvider+strPWD+_T("PersistSecurityInfo=True;")+strUID+strData+strDataSrc;returntrue;}boolCDBAdo:

:

SetConnectionString(CStringstrDriver,CStringstrDataSrc,CStringstrPassword){CStringstrProvider,strDataSource,strPWD;strProvider.Format(_T("Provider=%s;"),strDriver);strDataSource.Format(_T("DataSource=%s;"),strDataSrc);strPWD.Format(_T("JetOLEDB:

DataBasePassword=%s;"),strPassword);//构造连接字符串m_strConnect=strProvider+_T("UserID=Admin;")+strDataSource+strPWD;returntrue;}boolCDBAdo:

:

OpenConnection(){try{//关闭连接CloseConnection();//连接数据库DetectResult(m_ptrConnection->Open(_bstr_t(m_strConnect),"","",adModeUnknown));m_ptrConnection->CursorLocation=adUseClient;m_ptrCommand->ActiveConnection=m_ptrConnection;returntrue;}catch(_com_error&comError){RecordErrorMsg(comError);}returnfalse;}boolCDBAdo:

:

CloseConnection(){try{CloseRecordset();if((m_ptrConnection!

=NULL)&&(m_ptrConnection->GetState()!

=adStateClosed))DetectResult(m_ptrConnection->Close());returntrue;}catch(_com_error&comError){RecordErrorMsg(comError);}returnfalse;}boolCDBAdo:

:

IsConnecting(){try{//状态判断if(m_ptrConnection==NULL)returnfalse;if(m_ptrConnection->GetState()==adStateClosed)returnfalse;//参数判断longlErrorCount=m_ptrConnection->Errors->Count;if(lErrorCount>0L){ErrorPtrpError=NULL;for(longi=0;i<lErrorCount;i++){pError=m_ptrConnection->Errors->GetItem(i);if(pError->Number==0x80004005)returnfalse;}}returntrue;}catch(_com_error&comError){RecordErrorMsg(comError);}returnfalse;}boolCDBAdo:

:

OpenRecordset(char*szSQL){try{//关闭记录集CloseRecordset();m_ptrRecordset->Open(szSQL,m_ptrConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);returntrue;}catch(_com_error&comError){RecordErrorMsg(comError);}returnfalse;}boolCDBAdo:

:

CloseRecordset(){try{if(IsRecordsetOpened())DetectResult(m_ptrRecordset->Close());returntrue;}catch(_com_error&comError){RecordErrorMsg(comError);}returnfalse;}boolCDBAdo:

:

IsRecordsetOpened(){if(m_ptrRecordset==NULL)returnfalse;if(m_ptrRecordset->GetState()==adStateClosed)returnfalse;returntrue;}boolCDBAdo:

:

IsEndRecordset(){try{return(m_ptrRecordset->EndOfFile==VARIANT_TRUE);}catch(_com_error&comError){RecordErrorMsg(comError);}returntrue;}voidCDBAdo:

:

MoveToNext(){try{m_ptrRecordset->MoveNext();}catch(_com_error&comError){RecordErrorMsg(comError);}}voidCDBAdo:

:

MoveToFirst(){try{m_ptrRecordset->MoveFirst();}catch(_com_error&comError){RecordErrorMsg(comError);}}voidCDBAdo:

:

MoveToLast(){try{m_ptrRecordset->MoveLast();}catch(_com_error&comError){RecordErrorMsg(comError);}}longCDBAdo:

:

GetRecordCount(){try{if(m_ptrRecordset==NULL)return0;returnm_ptrRecordset->GetRecordCount();}catch(_com_error&comError){RecordErrorMsg(comError);}return0;}voidCDBAdo:

:

ClearAllParameters(){try{longlParamCount=m_ptrCommand->Parameters->Count;if(lParamCount>0L){for(longi=lParamCount;i>0;i--){_variant_tvtIndex;vtIndex.intVal=i-1;m_ptrCommand->Parameters->Delete(vtIndex);}}}catch(_com_error&comError){RecordErrorMsg(comError);}}voidCDBAdo:

:

AddParamter(LPCTSTRlpcsrName,ADOWE:

:

ParameterDirectionEnumDirection,ADOWE:

:

DataTypeEnumType,longlSize,_variant_t&vtValue){ASSERT(lpcsrName!

=NULL);try{_ParameterPtrParameter=m_ptrCommand->CreateParameter(lpcsrName,Type,Direction,lSize,vtValue);m_ptrCommand->Parameters->Append(Parameter);}catch(_com_error&comError){RecordErrorMsg(comError);}}voidCDBAdo:

:

SetSPName(LPCTSTRlpcsrSPName){try{m_ptrCommand->CommandText=lpcsrSPName;}catch(_com_error&comError){RecordErrorMsg(comError);}}boolCDBAdo:

:

ExecuteCommand(boolbIsRecordset){try{//关闭记录集CloseRecordset();//执行命令if(bIsRecordset){m_ptrRecordset->PutRefSource(m_ptrCommand);m_ptrRecordset->CursorLocation=adUseClient;DetectResult(m_ptrRecordset->Open((IDispatch*)m_ptrCommand,vtMissing,adOpenForwardOnly,adLockReadOnly,adOptionUnspecified));}else{m_ptrConnection->CursorLocation=adUseClient;DetectResult(m_ptrCommand->Execute(NULL,NULL,adExecuteNoRecords));}returntrue;}catch(_com_error&comError){RecordErrorMsg(comError);}returnfalse;}boolCDBAdo:

:

Execute(LPCTSTRlpcsrCommand){try{m_ptrConnection->CursorLocation=adUseClient;m_ptrConnection->Execute(lpcsrCommand,NULL,adExecuteNoRecords);returntrue;}catch(_com_error&comError){RecordErrorMsg(comError);}returnfalse;}longCDBAdo:

:

GetReturnValue(){try{_ParameterPtrptrParam;longlParameterCount=m_ptrCommand->Parameters->Count;for(longi=0;i<lParameterCount;i++){ptrParam=m_ptrCommand->Parameters->Item[i];if(ptrParam->Direction==adParamReturnValue)returnptrParam->Value.lVal;}}catch(_com_error&comError){RecordErrorMsg(comError);}return0;}boolCDBAdo:

:

GetFieldValue(LPCTSTRlpcsrFieldName,WORD&wValue){wValue=0L;try{_variant_tvtFld=m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;if((vtFld.vt!

=VT_NULL)&&(vtFld.vt!

=VT_EMPTY))wValue=(WORD)vtFld.ulVal;returntrue;}catch(_com_error&comError){RecordErrorMsg(comError);}returnfalse;}boolCDBAdo:

:

GetFieldValue(LPCTSTRlpcsrFieldName,CString&strValue){try{_variant_tvtFld=m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value;if(vtFld.vt==VT_BSTR){strValue=(char*)_bstr_t(vtFld);strValue.TrimLeft();returntrue;}returnfalse;}catch(_com_error&comError){RecordErrorMsg(comError);}returnfalse;}boolCDBAdo:

:

GetFieldValue(LPCTSTRlpcsrFieldName,INT&nValue){nValue=0;try{_variant_tvtFld=m_ptrRec

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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