資源簡介
對ADO進行簡單封裝,支持參數化、存儲過程。
同一語句可以多次執行,以提高效率。
使用方法:
1、創建對象
2、參數準備(如果有的話)
3、數據庫命令準備(如果需要多次執行)
4、打開數據庫連接
5、執行SQL語句或者準備好的數據庫命令,返回受影響的記錄條數或者數據集中地記錄數。
6、操作傳出的數據集(可參照ExecuteScalar)
7、使用PutParameters刷新參數值,進行再次執行(如果需要多次執行)。
8、調用CloseRecordset關閉數據集,同時釋放數據庫命令對象。
9、關閉數據庫連接。
注釋暫時比較少,請多包涵。

代碼片段和文件信息
#include?“stdafx.h“
#include?“ADOAccess.h“
CADOAccess::CADOAccess()
{
????try
????{
????????CoInitialize(NULL);
????????m_pConnection.CreateInstance(“ADODB.Connection“);
????}
????catch(...)
????{
????????TRACE(L“Warning:?%s?發生異常.?錯誤信息:?%s;?文件:?%s;?行:?%d\n“)
?????????????__FUNCTION__??L“未知錯誤“?__FILE__?__LINE__);
????}
}
CADOAccess::~CADOAccess()
{
????m_pConnection.Release();
????CoUninitialize();
}
BOOL?CADOAccess::IsConnectionOpen()
{
????return?(m_pConnection?!=?NULL?&&?(m_pConnection->State?&?adStateOpen));
}
_RecordsetPtr?CADOAccess::OpenSchema(SchemaEnum?QueryType)
{
????return?m_pConnection->OpenSchema(QueryType);
}
BOOL?CADOAccess::OpenConnection(LPCTSTR?lpszConnect?long?lOptions)
{
????HRESULT?rtn;
????if?(_tcscmp(lpszConnect?_T(““))?!=?0)
????{
????????m_strConnection?=?lpszConnect;
????}
????if?(m_strConnection.IsEmpty())
????{
????????ASSERT(FALSE);
????????return?FALSE;
????}
????if?(IsConnectionOpen())
????{
????????return?TRUE;
????}
????try
????{
????????m_pConnection->Mode?=?adModeReadWrite;
????????m_pConnection->CursorLocation?=?adUseClient;
????????rtn?=?m_pConnection->Open((_bstr_t)m_strConnection?““?““?lOptions);
????????return?(rtn?==?S_OK);
????}
????catch?(_com_error?e)
????{
????????TRACE(_T(“Warning:?%s?發生異常.?錯誤信息:?%s;?文件:?%s;?行:?%d\n“)
?????????????__FUNCTION__??e.ErrorMessage()?__FILE__?__LINE__);
????????return?FALSE;
????}?
????catch?(...)
????{
????????TRACE(_T(“Warning:?連接數據庫時發生未知錯誤:“));
????}
????return?FALSE;
}
BOOL?CADOAccess::ConnectSQLServer(CString?strDBSrc?CString?strDBName
?????????CString?strUser?CString?strPwd?long?lOptions)
{
????CString?strConnect?=_T(“Provider=SQLOLEDB.1;?Data?Source=%s;“);
????strConnect.Append(_T(“?Initial?Catalog=%s;?User?ID=%s;?PWD=%s“));
????m_strConnection.Format(strConnect?strDBSrc?strDBName?strUser?strPwd);
????return?OpenConnection(m_strConnection?lOptions);
}
void?CADOAccess::CloseConnection()
{
????try
????{
????????CloseRecordset();
????????if?(m_pCommand?!=?NULL)
????????{
????????????m_pCommand.Release();
????????}
????????if?(IsConnectionOpen())?
????????{
????????????m_pConnection->Close();
????????}
????}
????catch?(_com_error?e)
????{
????????TRACE(_T(“Warning:?%s?發生異常.?錯誤信息:?%s;?文件:?%s;?行:?%d\n“)
?????????????__FUNCTION__?e.ErrorMessage()?__FILE__?__LINE__);
????}?
}
long?CADOAccess::BeginTrans()
{
????ASSERT(m_pConnection?!=?NULL);
????try
????{
????????return?m_pConnection->BeginTrans();
????}
????catch?(_com_error?e)
????{
????????TRACE(_T(“Warning:?%s?發生異常.?錯誤信息:?%s;?文件:?%s;?行:?%d\n“)
?????????????__FUNCTION__?e.ErrorMessage()?__FILE__?__LINE__);
????????return?-1;
????}?
????return?-1;
}
BOOL?CADOAccess::RollbackTrans()
{
????ASSERT(m_pConnection?!=?NULL);
????try
????{
????????return?SUCCEEDED(m_pConnection->RollbackTrans());
????}
????catch?(_com_error?e)
????{
????????TRACE(_T(“Warn
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2097??2009-11-20?14:21??ADOAccess.h
?????文件???????9018??2009-11-23?15:01??ADOAccess.cpp
-----------?---------??----------?-----??----
????????????????11115????????????????????2
評論
共有 條評論