?? 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
//////////////////////////////////////////////////////////////////////
// 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 + -