-
大小: 3KB文件類型: .rar金幣: 2下載: 1 次發(fā)布日期: 2021-06-05
- 語言: 數(shù)據(jù)庫
- 標(biāo)簽: ADO??參數(shù)化??存儲過程??
資源簡介
對ADO進(jìn)行簡單封裝,支持參數(shù)化、存儲過程。
同一語句可以多次執(zhí)行,以提高效率。
使用方法:
1、創(chuàng)建對象
2、參數(shù)準(zhǔn)備(如果有的話)
3、數(shù)據(jù)庫命令準(zhǔn)備(如果需要多次執(zhí)行)
4、打開數(shù)據(jù)庫連接
5、執(zhí)行SQL語句或者準(zhǔn)備好的數(shù)據(jù)庫命令,返回受影響的記錄條數(shù)或者數(shù)據(jù)集中地記錄數(shù)。
6、操作傳出的數(shù)據(jù)集(可參照ExecuteScalar)
7、使用PutParameters刷新參數(shù)值,進(jìn)行再次執(zhí)行(如果需要多次執(zhí)行)。
8、調(diào)用CloseRecordset關(guān)閉數(shù)據(jù)集,同時釋放數(shù)據(jù)庫命令對象。
9、關(guān)閉數(shù)據(jù)庫連接。
注釋暫時比較少,請多包涵。

代碼片段和文件信息
#include?“stdafx.h“
#include?“ADOAccess.h“
CADOAccess::CADOAccess()
{
????try
????{
????????CoInitialize(NULL);
????????m_pConnection.CreateInstance(“ADODB.Connection“);
????}
????catch(...)
????{
????????TRACE(L“Warning:?%s?發(fā)生異常.?錯誤信息:?%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?發(fā)生異常.?錯誤信息:?%s;?文件:?%s;?行:?%d\n“)
?????????????__FUNCTION__??e.ErrorMessage()?__FILE__?__LINE__);
????????return?FALSE;
????}?
????catch?(...)
????{
????????TRACE(_T(“Warning:?連接數(shù)據(jù)庫時發(fā)生未知錯誤:“));
????}
????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?發(fā)生異常.?錯誤信息:?%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?發(fā)生異常.?錯誤信息:?%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
評論
共有 條評論