ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:17.15KB ,
资源ID:12565904      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12565904.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ado方式操作数据库类.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ado方式操作数据库类.docx

1、ado方式操作数据库类ado方式操作数据库类 VC/MFC数据库新任版主zyq5945(竹叶青)在数据库版开设帖子整理的一些ADO数据库入门与例子,为了表示支持我在其中回复了一个自己平时用的ado操作数据库的类。怎奈论坛对回帖字数有限制,结果只贴了头文件.不过竹叶青版主邀请我把这个类整理到博客里以便分享,我觉得这个办法不错。不过既然要整理到博客里就应该更正式一些,所以花些时间规范了一下这个类,并且制作了一个简单的使用范例,也算是对竹版的支持,对数据库版的一点小小的贡献吧。 好久没写博客了,其实应该多说两句介绍一下这个类和其简单的使用。不过自己在数据库方面确实知之甚少,这个类其实也是抄来的,只不

2、过在自己的使用过程中“本土化”了一下,呵呵。所以就不班门弄斧了,直接上代码吧,希望能对有志于涉足于数据库应用技术的同僚们有所帮助,按竹版的话说算是“入门实例”吧。使用范例本例中操作的数据库为ACCESS2003,操作方式为本地连接,数据库带密码 类实现代码头文件cpp view plaincopy#pragma once #include math.h #import MSADO15.DLL rename_namespace(ADOWE) rename(EOF,EndOfFile) using namespace ADOWE; class CDBAdo public: _CommandPtr

3、m_ptrCommand; /命令对象 _RecordsetPtr m_ptrRecordset; /记录集对象 _ConnectionPtr m_ptrConnection; /数据库对象 CString m_strConnect, /连接字符串 m_strErrorMsg; /错误信息 public: CDBAdo(void); CDBAdo(void); void DetectResult(HRESULT hResult); void RecordErrorMsg(_com_error comError); CString GetLastError()return m_strErrorM

4、sg; bool CreateInstance(); bool SetConnectionString(CString strDriver, CString strIP, WORD wPort, CString strCatalog, CString strUserID, CString strPassword); bool SetConnectionString(CString strDriver, CString strDataSrc, CString strPassword); bool OpenConnection(); bool CloseConnection(); bool IsC

5、onnecting(); void ClearAllParameters(); void AddParamter(LPCTSTR lpcsrName, ADOWE:ParameterDirectionEnum Direction, ADOWE:DataTypeEnum Type, long lSize, _variant_t & vtValue); void SetSPName(LPCTSTR lpcsrSPName); bool ExecuteCommand(bool bIsRecordset); bool Execute(LPCTSTR lpcsrCommand); long Ge

6、tReturnValue(); bool OpenRecordset(char* szSQL); bool CloseRecordset(); bool IsRecordsetOpened(); bool IsEndRecordset(); void MoveToNext(); void MoveToFirst(); void MoveToLast(); long GetRecordCount(); bool GetFieldValue(LPCTSTR lpcsrFieldName, WORD& wValue); bool GetFieldValue(LPCTSTR lpcsrFiel

7、dName, CString& strValue); bool GetFieldValue(LPCTSTR lpcsrFieldName, INT& nValue); bool GetFieldValue(LPCTSTR lpcsrFieldName, BYTE& bValue); bool GetFieldValue(LPCTSTR lpcsrFieldName, LONG& lValue); bool GetFieldValue(LPCTSTR lpcsrFieldName, DWORD& dwValue); bool GetFieldValue(L

8、PCTSTR lpcsrFieldName, UINT& ulValue); bool GetFieldValue(LPCTSTR lpcsrFieldName, DOUBLE& dbValue); bool GetFieldValue(LPCTSTR lpcsrFieldName, _int64& llValue); bool GetFieldValue(LPCTSTR lpcsrFieldName, COleDateTime& Time); bool GetFieldValue(LPCTSTR lpcsrFieldName, bool& bValue

9、); ; 实现文件cpp view plaincopy#include StdAfx.h #include DBAdo.h CDBAdo:CDBAdo(void) m_strConnect = _T(); m_strErrorMsg = _T(); /初始化 COM CoInitialize(NULL); CDBAdo:CDBAdo(void) /关闭连接 CloseConnection(); /释放对象 if(m_ptrCommand!=NULL) m_ptrCommand.Release(); if(m_ptrRecordset!=NULL) m_ptrRecordset.Release(

10、); if(m_ptrConnection!=NULL) m_ptrConnection.Release(); bool CDBAdo:CreateInstance() /创建对象 m_ptrCommand.CreateInstance(_uuidof(Command); m_ptrRecordset.CreateInstance(_uuidof(Recordset); m_ptrConnection.CreateInstance(_uuidof(Connection); if(m_ptrCommand=NULL) m_strErrorMsg = _T(数据库命令对象创建失败); return

11、 false; if(m_ptrRecordset=NULL) m_strErrorMsg = _T(数据库记录集对象创建失败); return false; if(m_ptrConnection=NULL) m_strErrorMsg = _T(数据库连接对象创建失败); return false; /设置变量 m_ptrCommand->CommandType = adCmdStoredProc; return true; void CDBAdo:DetectResult(HRESULT hResult) if(FAILED(hResult) _com_issue_error(hRe

12、sult); void CDBAdo:RecordErrorMsg(_com_error comError) _bstr_t bstrDescribe(comError.Description(); m_strErrorMsg.Format(TEXT(ADO 错误:0x%8x,%s), comError.Error(), (LPCTSTR)bstrDescribe); bool CDBAdo:SetConnectionString(CString strDriver, CString strIP, WORD wPort, CString strCatalog, CString strUserI

13、D, CString strPassword) CString strProvider, strPWD, strUID, strData, strDataSrc; strProvider.Format(_T(Provider=%s;), strProvider); strPWD.Format(_T(Password=%s;), strPassword); strUID.Format(_T(User ID=%s;), strUserID); strData.Format(_T(Initial Catalog=%s;), strCatalog); strDataSrc.Format(_T(Data

14、 Source=%s,%ld;), strIP, wPort); /构造连接字符串 m_strConnect = strProvider+strPWD+_T(Persist Security Info=True;)+strUID+strData+strDataSrc; return true; bool CDBAdo:SetConnectionString(CString strDriver, CString strDataSrc, CString strPassword) CString strProvider, strDataSource, strPWD; strProvider.Form

15、at(_T(Provider=%s;), strDriver); strDataSource.Format(_T(Data Source=%s;), strDataSrc); strPWD.Format(_T(Jet OLEDB:DataBase Password=%s;), strPassword); /构造连接字符串 m_strConnect = strProvider+_T(User ID=Admin;)+strDataSource+strPWD; return true; bool CDBAdo:OpenConnection() try /关闭连接 CloseConnection();

16、 /连接数据库 DetectResult(m_ptrConnection->Open(_bstr_t(m_strConnect), , , adModeUnknown); m_ptrConnection->CursorLocation = adUseClient; m_ptrCommand->ActiveConnection = m_ptrConnection; return true; catch(_com_error& comError) RecordErrorMsg(comError); return false; bool CDBAdo:CloseConnec

17、tion() try CloseRecordset(); if(m_ptrConnection!=NULL)&&(m_ptrConnection->GetState()!=adStateClosed) DetectResult(m_ptrConnection->Close(); return true; catch(_com_error& comError) RecordErrorMsg(comError); return false; bool CDBAdo:IsConnecting() try /状态判断 if(m_ptrConnection=NULL)

18、 return false; if(m_ptrConnection->GetState()=adStateClosed) return false; /参数判断 long lErrorCount = m_ptrConnection->Errors->Count; if(lErrorCount>0L) ErrorPtr pError = NULL; for(long i=0; i<lErrorCount; i+) pError = m_ptrConnection->Errors->GetItem(i); if(pError->Number=0x80

19、004005) return false; return true; catch(_com_error& comError) RecordErrorMsg(comError); return false; bool CDBAdo:OpenRecordset(char* szSQL) try /关闭记录集 CloseRecordset(); m_ptrRecordset->Open(szSQL, m_ptrConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); return true; c

20、atch(_com_error& comError) RecordErrorMsg(comError); return false; bool CDBAdo:CloseRecordset() try if(IsRecordsetOpened() DetectResult(m_ptrRecordset->Close(); return true; catch(_com_error& comError) RecordErrorMsg(comError); return false; bool CDBAdo:IsRecordsetOpened() if(m_ptrRecords

21、et=NULL) return false; if(m_ptrRecordset->GetState()=adStateClosed) return false; return true; bool CDBAdo:IsEndRecordset() try return (m_ptrRecordset->EndOfFile=VARIANT_TRUE); catch(_com_error& comError) RecordErrorMsg(comError); return true; void CDBAdo:MoveToNext() try m_ptrRecordset-&g

22、t;MoveNext(); catch(_com_error& comError) RecordErrorMsg(comError); void CDBAdo:MoveToFirst() try m_ptrRecordset->MoveFirst(); catch(_com_error& comError) RecordErrorMsg(comError); void CDBAdo:MoveToLast() try m_ptrRecordset->MoveLast(); catch(_com_error& comError) RecordErrorMsg(c

23、omError); long CDBAdo:GetRecordCount() try if(m_ptrRecordset=NULL) return 0; return m_ptrRecordset->GetRecordCount(); catch(_com_error& comError) RecordErrorMsg(comError); return 0; void CDBAdo:ClearAllParameters() try long lParamCount = m_ptrCommand->Parameters->Count; if(lParamCount&g

24、t;0L) for(long i=lParamCount; i>0; i-) _variant_t vtIndex; vtIndex.intVal = i-1; m_ptrCommand->Parameters->Delete(vtIndex); catch(_com_error& comError) RecordErrorMsg(comError); void CDBAdo:AddParamter(LPCTSTR lpcsrName, ADOWE:ParameterDirectionEnum Direction, ADOWE:DataTypeEnum Type, l

25、ong lSize, _variant_t & vtValue) ASSERT(lpcsrName!=NULL); try _ParameterPtr Parameter = m_ptrCommand->CreateParameter(lpcsrName, Type, Direction, lSize, vtValue); m_ptrCommand->Parameters->Append(Parameter); catch(_com_error& comError) RecordErrorMsg(comError); void CDBAdo:SetSPName

26、(LPCTSTR lpcsrSPName) try m_ptrCommand->CommandText = lpcsrSPName; catch(_com_error& comError) RecordErrorMsg(comError); bool CDBAdo:ExecuteCommand(bool bIsRecordset) try /关闭记录集 CloseRecordset(); /执行命令 if(bIsRecordset) m_ptrRecordset->PutRefSource(m_ptrCommand); m_ptrRecordset->CursorLo

27、cation = adUseClient; DetectResult(m_ptrRecordset->Open(IDispatch*)m_ptrCommand, vtMissing, adOpenForwardOnly, adLockReadOnly, adOptionUnspecified); else m_ptrConnection->CursorLocation = adUseClient; DetectResult(m_ptrCommand->Execute(NULL, NULL, adExecuteNoRecords); return true; catch(_co

28、m_error& comError) RecordErrorMsg(comError); return false; bool CDBAdo:Execute(LPCTSTR lpcsrCommand) try m_ptrConnection->CursorLocation = adUseClient; m_ptrConnection->Execute(lpcsrCommand, NULL, adExecuteNoRecords); return true; catch(_com_error& comError) RecordErrorMsg(comError); r

29、eturn false; long CDBAdo:GetReturnValue() try _ParameterPtr ptrParam; long lParameterCount = m_ptrCommand->Parameters->Count; for(long i=0; i<lParameterCount; i+) ptrParam = m_ptrCommand->Parameters->Itemi; if(ptrParam->Direction=adParamReturnValue) return ptrParam->Value.lVal;

30、catch(_com_error& comError) RecordErrorMsg(comError); return 0; bool CDBAdo:GetFieldValue(LPCTSTR lpcsrFieldName, WORD& wValue) wValue = 0L; try _variant_t vtFld = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value; if(vtFld.vt!=VT_NULL)&&(vtFld.vt!=VT_EMPTY) wValue = (W

31、ORD)vtFld.ulVal; return true; catch(_com_error& comError) RecordErrorMsg(comError); return false; bool CDBAdo:GetFieldValue(LPCTSTR lpcsrFieldName, CString& strValue) try _variant_t vtFld = m_ptrRecordset->Fields->GetItem(lpcsrFieldName)->Value; if(vtFld.vt=VT_BSTR) strValue = (char*)_bstr_t(vtFld); strValue.TrimLeft(); return true; return false; catch(_com_error& comError) RecordErrorMsg(comError); return false; bool CDBAdo:GetFieldValue(LPCTSTR lpcsrFieldName, INT& nValue) nValue = 0; try _variant_t vtFld = m_ptrRec

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

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