文档详情

数据库访问层的实现.doc

发布:2017-08-13约3.32千字共5页下载文档
文本预览下载声明
系统数据库操作采用ADO技术,在进行代码设计时,把数据库操作的代码单独写在一个自定义的ado.cpp文件里,包括CADODatabase和CADORecordset两个类分别实现对数据库和记录集的操作,并将这些操作封装在两个类中。 (1)引入ado库 #import C:\Program Files\Common Files\System\ADO\msado15.dll no_namespace rename(EOF, adoEOF),rename(BOF,adoBOF) (2)用_ConnectionPtr对象连接数据库 连接数据库操作中LPCTSTR lpstrConnection作为输入参数,在lpstrConnection参数中设置驱动driver={SQL Server},数据源(本地) Server=,数据库名称DATABASE=QUEStoreDB,数据库用户名UID,数据库用户密码PWD。运用_ConnectionPtr连接数据源。主要代码如下: BOOL CADODatabase::Open(LPCTSTR lpstrConnection) { HRESULT hr = S_OK; if(IsOpen()) Close(); if(strcmp(lpstrConnection, _T()) != 0) m_strConnection = lpstrConnection; ASSERT(!m_strConnection.IsEmpty()); try { hr = m_pConnection-Open(_bstr_t(m_strConnection), , , NULL); return hr == S_OK; } catch(_com_error e) { dump_com_error(e); } return FALSE; } (3)用_ConnectionPtr对象执行指令 当对数据库进行插入、删除、更新操作时用此方法。String sql为输入参数,传入SQL(Insert,Delete,Update)语句。主要代码如下: BOOL CADODatabase::Execute(LPCTSTR lpstrExec) { ASSERT(m_pConnection != NULL); ASSERT(strcmp(lpstrExec, _T()) != 0); try { m_pConnection-Execute(_bstr_t(lpstrExec), NULL, adExecuteNoRecords); } catch(_com_error e) { dump_com_error(e); } return TRUE; } (4)使用_RecordsetPtr对象返回记录集 使用数据记录集指针_RecordsetPtr来实现ADO数据操作。lpstrExec为输入参数,传入SQL(Select)语句;通过_RecordsetPtr对象的操作提取记录集。主要代码如下: BOOL CADORecordset::Open(_ConnectionPtr mpdb, LPCTSTR lpstrExec, int nOption) { if (IsOpen()) Close(); if(strcmp(lpstrExec, _T()) != 0) m_strQuery = lpstrExec; ASSERT(!m_strQuery.IsEmpty()); m_strQuery.TrimLeft(); BOOL bIsSelect = m_strQuery.Mid(0, strlen(Select )).CompareNoCase(select ) == 0; try { m_pRecordset-CursorLocation = adUseClient; if(bIsSelect || nOption == openQuery) m_pRecordset-Open((LPCSTR)m_strQuery, _variant_t((IDispatch*)mpdb, TRUE), adOpenStatic, adLockOptimistic, adCmdText); else if(nOption == openTable) m_pRecordset-Open((LPCSTR)m_strQuery, _variant_t((IDispatch*)mpdb, TRUE), adOpenDynamic, adLockOptimistic, adCmdTable); els
显示全部
相似文档