?? adodatabase.cpp
字號:
//ADODatabase.cpp: Implementation of the CADOConnection class and the CADORecordset class
#include "stdafx.h"
#include "ADOObj.h"
#include "ADODatabase.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//Start up COM when globals are constructed, shut down COM when globals are destructed
struct StartUpCom
{
StartUpCom() //構造函數
{
CoInitialize(NULL); //初始化COM環境
}
~StartUpCom() //析構函數
{
CoUninitialize(); //釋放COM對象
}
} _global_com_inst;
/********************************************/
/*Implementation of the CADOConnection class*/
/********************************************/
CADOConnection::CADOConnection()
{
m_pConn = NULL;
m_sConnString = " ";
}
CADOConnection::~CADOConnection()
{
if(m_pConn->State ==adStateOpen)
m_pConn->Close();
m_pConn = NULL;
}
BOOL CADOConnection::Open(_bstr_t ConnectionString) //打開指定的數據源,并建立連接對象
{
HRESULT hr;
hr = m_pConn.CreateInstance("ADODB.Connection");
if(FAILED(hr))
return FALSE;
m_sConnString = ConnectionString;
m_pConn->CursorLocation = adUseClient;
hr = m_pConn->Open(m_sConnString, " ", " ", -1);
if(FAILED(hr))
return FALSE;
else
return TRUE;
}
void CADOConnection::Close() //關閉連接對象,斷開連接對象與數據源的聯系
{
if(m_pConn->State == adStateOpen)
{
m_pConn->Close();
m_pConn = NULL;
}
}
CADORecordset* CADOConnection::Excute(_bstr_t CommandText)
{
CADORecordset *adoRs = new CADORecordset;
_variant_t vRowsAffected;
if(m_pConn->State == adStateOpen)
adoRs->m_pRs = m_pConn->Execute(CommandText, &vRowsAffected, adCmdText);
else
adoRs->m_pRs = NULL;
return adoRs;
}
void CADOConnection::BeginTrans() //啟動事務處理
{
if(m_pConn->State == adStateOpen)
m_pConn->BeginTrans();
}
void CADOConnection::CommitTrans() //提交事務處理
{
if(m_pConn->State == adStateOpen)
m_pConn->CommitTrans();
}
void CADOConnection::RollbackTrans() //回滾事務處理
{
if(m_pConn->State == adStateOpen)
m_pConn->RollbackTrans();
}
_ConnectionPtr CADOConnection::GetConnection()
{
return m_pConn;
}
/********************************************/
/*Implementation of the CADORecordset class**/
/********************************************/
CADORecordset::CADORecordset()
{
m_pRs = NULL;
}
CADORecordset::~CADORecordset()
{
if(m_pRs->State == adStateOpen)
{
m_pRs->Close(); //關閉記錄集
m_pRs = NULL;
}
}
BOOL CADORecordset::Open(CString sCommandString, CADOConnection *adoConn) //打開一個記錄集
{
_ConnectionPtr pConn = adoConn->GetConnection();
HRESULT hr;
hr = m_pRs.CreateInstance("ADODB.Recordset");
if(FAILED(hr))
return FALSE;
hr = m_pRs->Open(_bstr_t(sCommandString), pConn.GetInterfacePtr(), adOpenStatic,
adLockOptimistic, adCmdText);
if(FAILED(hr))
return FALSE;
return TRUE;
}
void CADORecordset::Close() //關閉已打開的記錄集對象
{
if(m_pRs->State == adStateOpen)
{
m_pRs->Close();
m_pRs = NULL;
}
}
void CADORecordset::AddNew()
{
if(m_pRs->State == adStateOpen)
m_pRs->AddNew();
}
void CADORecordset::Delete()
{
if(m_pRs->State == adStateOpen)
{
m_pRs->Delete(adAffectCurrent);
MoveNext();
}
}
void CADORecordset::Update()
{
if(m_pRs->State == adStateOpen)
m_pRs->Update();
}
void CADORecordset::UpdateBatch()
{
if(m_pRs->State == adStateOpen)
m_pRs->UpdateBatch(adAffectAll);
}
_variant_t CADORecordset::operator()(_variant_t FieldName)
{
if (m_pRs->State == adStateOpen)
return m_pRs->GetCollect(FieldName);
else
return _variant_t(" ");
}
void CADORecordset::operator()(_variant_t FieldName, _variant_t Val)
{
if(m_pRs->State == adStateOpen)
m_pRs->PutCollect(_variant_t(FieldName), _variant_t(Val));
}
long CADORecordset::GetRecordNo()
{
if(m_pRs->State == adStateOpen)
return m_pRs->AbsolutePosition;
else
return 0L;
}
long CADORecordset::GetRecordCount()
{
if(m_pRs->State == adStateOpen)
return m_pRs->RecordCount;
else
return 0L;
}
void CADORecordset::MoveFirst()
{
if(m_pRs->State == adStateOpen)
m_pRs->MoveFirst();
}
void CADORecordset::MovePrev()
{
if(m_pRs->State == adStateOpen)
{
m_pRs->MovePrevious();
if(m_pRs->BOF)
m_pRs->MoveFirst();
}
}
void CADORecordset::MoveNext()
{
if(m_pRs->State == adStateOpen)
{
m_pRs->MoveNext();
if(m_pRs->adoEOF)
m_pRs->MoveLast();
}
}
void CADORecordset::MoveLast()
{
if(m_pRs->State == adStateOpen)
{
m_pRs->MoveLast();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -