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

📄 adodatabase.cpp

📁 用VC写的日记笔小程序,采用的序列化存储.
💻 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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CAdoDatabase::CAdoDatabase()
{
	CoInitialize(NULL);
	m_pConnect  = NULL;
	m_bOpen = FALSE;
}

CAdoDatabase::~CAdoDatabase()
{
	CoUninitialize();
}

BOOL CAdoDatabase::Open(CString strDBName,CString strUser,CString strPassword)
{
	m_pConnect.CreateInstance(__uuidof(Connection));
	_bstr_t strDBQ = "DBQ="+strDBName+";";	
	_bstr_t strCon = "";
	strCon +=	"PROVIDER=MSDASQL;" ;
	strCon +=	"DRIVER={Microsoft Access Driver (*.mdb)};" ;
	strCon +=	strDBQ;

	HRESULT hr;
	try
	{
		hr = m_pConnect->Open(strCon,(_bstr_t)strUser,(_bstr_t)strPassword,adModeUnknown);
	}
	catch(_com_error e)
	{
		AfxMessageBox("数据库连接失败,确认数据库'库房数据库.mdb'是否在当前路径下!");
		return FALSE;
	} 
	if (FAILED(hr))
		return false;
	else
		return true;
}

BOOL CAdoDatabase::Open(CString strServerName,CString strDBName,CString strUser,CString strPassword)
{
	m_bOpen = FALSE;
	m_pConnect.CreateInstance(__uuidof(Connection));

	CString str;
	str.Format("PROVIDER=MSDASQL;Driver={SQL Server};SERVER=%s;DATABASE=%s",strServerName,strDBName);
	HRESULT hr;
	try
	{
		m_pConnect->ConnectionTimeout = 10;
		hr = m_pConnect->Open((_bstr_t)str,(_bstr_t)strUser,(_bstr_t)strPassword,adModeUnknown);//"PROVIDER=MSDASQL;Driver={SQL Server};SERVER=FLYINGLLAMA;DATABASE=Demo","sa","",adModeUnknown);
	}
	catch(_com_error e)
	{
		AfxMessageBox("数据库连接失败!");
		CString tc = (char*)e.ErrorMessage();
		return FALSE;
	} 
	if (FAILED(hr))
		return false;
	else
	{
		m_bOpen = TRUE;
		return true;
	}
}
void CAdoDatabase::Close()
{
	if(m_pConnect)
	{
		m_pConnect->Close();
		m_pConnect.Release();
	}	
}

BOOL CAdoDatabase::CommitTrans()
{
	long hr;
	try
	{
		hr = m_pConnect->CommitTrans();
	}
	catch(_com_error e)
	{
		CString tc = (char*)e.ErrorMessage();
		return FALSE;
	} 
	return hr == 0;
}

BOOL CAdoDatabase::BeginTrans()
{
	long hr;
	try
	{
		hr = m_pConnect->BeginTrans();
	}
	catch(_com_error e)
	{
		CString tc = (char*)e.ErrorMessage();
		return FALSE;
	} 
	return hr == 0;
}

BOOL CAdoDatabase::Rollback()
{
	long hr;
	try
	{
		hr = m_pConnect->RollbackTrans();
	}
	catch(_com_error e)
	{
		CString tc = (char*)e.ErrorMessage();
		return FALSE;
	} 
	return hr == 0;
}


BOOL CAdoDatabase::IsOpen()
{
	return m_bOpen;
}

_RecordsetPtr CAdoDatabase::Execute(LPCTSTR lpszSQL, long lOptions)
{
	ASSERT(m_pConnect != NULL);
	ASSERT(AfxIsValidString(lpszSQL));

	try
	{
		return m_pConnect->Execute(_bstr_t(lpszSQL), NULL, lOptions);
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: Execute 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return FALSE;
	} 
	return FALSE;
}

CString CAdoDatabase::GetLastErrorText()
{
	ASSERT(m_pConnect != NULL);
	CString strErrors = "";
	try
	{
		if (m_pConnect != NULL)
		{
			ErrorsPtr pErrors = m_pConnect->Errors;
			CString strError;
			for (long n = 0; n < pErrors->Count; n++)
			{
				ErrorPtr pError = pErrors->GetItem(n);
				strError.Format(_T("Description: %s\r\nState: %s, Native: %d, Source: %s\r\n"),
								(LPCTSTR)pError->Description,
								(LPCTSTR)pError->SQLState,
										 pError->NativeError,
								(LPCTSTR)pError->Source);
				strErrors += strError;
			}
		}
		return strErrors;
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: GetLastError 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return strErrors;
	} 
	return strErrors;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -