📄 adodatabase.cpp
字号:
// ADODatabase.cpp: implementation of the CADODatabase class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ADODatabase.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
// Global Instance to force load/unload of OLE
struct InitOle
{
InitOle() { ::CoInitialize(NULL); }
~InitOle() { ::CoUninitialize(); }
} _init_InitOle_;
CADOConnection::CADOConnection()
{
m_pConn = NULL;
m_sConnString = "";
}
CADOConnection::~CADOConnection()
{
if (m_pConn->State == adStateOpen)
m_pConn->Close();
}
BOOL CADOConnection::Open(_bstr_t ConnectionString)
{
//try
//{
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;
}
}
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();
}
}
CADORecordset* CADOConnection::Execute(_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;
}
_ConnectionPtr CADOConnection::GetConnection()
{
return m_pConn;
}
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::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();
}
}
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 ()(CString FieldName, CString Val)
{
if (m_pRs->State == adStateOpen)
{
m_pRs->PutCollect(_variant_t(FieldName), _variant_t(Val));
}
}
long CADORecordset::GetRecordCount()
{
if (m_pRs->State == adStateOpen)
return m_pRs->RecordCount;
else
return 0L;
}
long CADORecordset::GetRecordNo()
{
if (m_pRs->State == adStateOpen)
return m_pRs->AbsolutePosition;
else
return 0L;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -