⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adodatabase.cpp

📁 难得的数据库基础及应用程序
💻 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 + -