📄 voconnection.cpp
字号:
// VOConnection.cpp: implementation of the CVOConnection class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "VOConnection.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#include <COMDEF.H>
#include <ADOCE31.H>
#include "VOConnection.h"
#include "VORecordset.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
const IID IID__Connection = { 0x113033de, 0xf682, 0x11d2, { 0xbb, 0x62, 0x00, 0xc0, 0x4f, 0x68, 0x0a, 0xcc}};
void __stdcall _com_issue_error(HRESULT m_hr)
{
TCHAR pcszError[1024];
_stprintf(pcszError, TEXT("_com_issue_error(%ld)\n"), m_hr);
OutputDebugString(pcszError);
}
BOOL CVOConnection::g_Init = FALSE;
CLSID CVOConnection::g_ClsID;
TCHAR* CVOConnection::g_ProgID = TEXT("ADOCE.Connection.3.1");
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CVOConnection::CVOConnection(LPCTSTR pcszProvider) : m_Conn(NULL)
{
// AfxMessageBox(_T("init"));
if(!g_Init)
Initialize();
HRESULT hr;
if(pcszProvider == NULL)
{
pcszProvider = TEXT("cedb");
hr = CoCreateInstance(g_ClsID, NULL, CLSCTX_INPROC_SERVER, IID__Connection, (LPVOID*) &m_Conn);
if(FAILED(hr))
{
// AfxMessageBox(_T("connectin created err"));
return;
}
hr = m_Conn->put_Provider((LPTSTR)pcszProvider);
hr = m_Conn->Open(TEXT(""),TEXT(""),TEXT(""),adOpenUnspecified);
}
else
{
m_strProvider = pcszProvider;
m_Conn = NULL;
}
}
CVOConnection::~CVOConnection()
{
// AfxMessageBox(_T("delete conntection"));
if(m_Conn)
{
m_Conn->Close();
m_Conn->Release();
}
// AfxMessageBox(_T("delete conntection end"));
}
BOOL CVOConnection::Initialize()
{
if(FAILED(CoInitializeEx(NULL, COINIT_MULTITHREADED)))
return FALSE;
HRESULT hr;
hr = CLSIDFromProgID(g_ProgID, &g_ClsID);
if(FAILED(hr))
return FALSE;
g_Init = TRUE;
return TRUE;
}
BOOL CVOConnection::Execute(LPCTSTR pcszSQL)
{
CVORecordSet rs(*this);
return rs.Open(pcszSQL, adOpenForwardOnly, adLockPessimistic);
}
void CVOConnection::ClearConnect()
{
if( m_Conn )
{
m_Conn->Close();
m_Conn->put_Provider((LPTSTR)(TEXT("cedb")));
m_Conn->Open(TEXT(""),TEXT(""),TEXT(""),adOpenUnspecified);
m_strProvider = TEXT("");
}
}
void CVOConnection::SetConnectDB(LPCTSTR lpszDBName)
{
if( m_Conn )
{
m_Conn->Close();
m_Conn->put_Provider((LPTSTR)(TEXT("cedb")));
m_Conn->Open((LPTSTR)lpszDBName,TEXT(""),TEXT(""),adOpenUnspecified);
m_strProvider = lpszDBName;
}
}
bool CVOConnection::DBExist(LPCTSTR dbName)
{
CString tmp;
tmp.Format(_T("CREATE DATABASE '%s'"), dbName);
return (!Execute(tmp));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -