?? ado.cpp
字號:
#include "stdafx.h"
#include "Ado.h"
int AdoDB::m_nRef=0;
AdoDB::AdoDB()
{
HRESULT hr;
if(m_nRef == 0)
CoInitializeEx(NULL,COINIT_MULTITHREADED);
m_nRef++;
hr=m_pConn.CoCreateInstance(__uuidof(Connection));
if(SUCCEEDED(hr))
m_bAdoOK=TRUE;
else
m_bAdoOK=FALSE;
}
AdoDB::~AdoDB()
{
m_nRef--;
if(!m_nRef)
CoUninitialize();
}
BOOL AdoDB::CreateDatabase(LPTSTR strDB)
{
HRESULT hr;
CComPtr<_Recordset> pRS;
hr=pRS.CoCreateInstance(__uuidof(Recordset));
if(!SUCCEEDED(hr))
{
return FALSE;
}
WCHAR strSql[256];
VARIANT vNull,vSql;
vNull.vt = VT_ERROR;
vNull.scode = DISP_E_PARAMNOTFOUND;
swprintf(strSql,L"CREATE DATABASE '%ls'",strDB);
vSql.vt=VT_BSTR;
vSql.bstrVal=SysAllocString(strSql);
hr=pRS->Open(vSql,vNull,adOpenUnspecified,adLockUnspecified,adCmdText);
SysFreeString(vSql.bstrVal);
return SUCCEEDED(hr);
}
BOOL
AdoDB::OpenDB(
LPTSTR strDB,
LPTSTR strUser,
LPTSTR strPass
)
{
if(!m_bAdoOK)
return FALSE;
HRESULT hr;
m_pConn->put_Provider(L"cedb");
//m_pConn->put_Provider(L"Microsoft.SQLSERVER.OLEDB.CE.2.0");
hr=m_pConn->Open(strDB,strUser,strPass,adModeUnknown);
return SUCCEEDED(hr);
}
BOOL
AdoDB::CloseDB()
{
if(!m_bAdoOK)
return FALSE;
HRESULT hr;
hr= m_pConn->Close();
return SUCCEEDED(hr);
}
BOOL
AdoDB::ExecuteSql(
LPTSTR strSql
)
{
if(!m_bAdoOK)
return FALSE;
HRESULT hr;
hr=m_pConn->Execute(strSql,NULL,0,NULL);
return SUCCEEDED(hr);
}
BOOL
AdoDB::Query(
LPTSTR strSql
)
{
if(!m_bAdoOK)
return FALSE;
HRESULT hr;
CComPtr<_Recordset> pRS;
hr=pRS.CoCreateInstance(__uuidof(Recordset));
if(!SUCCEEDED(hr))
return FALSE;
VARIANT vNull,vConn,vSql;
vConn.vt=VT_DISPATCH;
vConn.pdispVal=m_pConn;
pRS->put_ActiveConnection(vConn);
vNull.vt = VT_ERROR;
vNull.scode = DISP_E_PARAMNOTFOUND;
vSql.vt=VT_BSTR;
vSql.bstrVal=SysAllocString(strSql);
hr=pRS->Open(vSql,vNull,adOpenUnspecified,adLockUnspecified,adCmdText);
SysFreeString(vSql.bstrVal);
return SUCCEEDED(hr);
}
BOOL
AdoDB::Query(
LPTSTR strSql,
_Recordset **ppRS
)
{
if(!m_bAdoOK)
return FALSE;
HRESULT hr;
CComPtr<_Recordset> pRS;
hr=pRS.CoCreateInstance(__uuidof(Recordset));
if(!SUCCEEDED(hr))
return FALSE;
VARIANT vNull,vConn,vSql;
vConn.vt=VT_DISPATCH;
vConn.pdispVal=m_pConn;
pRS->put_ActiveConnection(vConn);
vNull.vt = VT_ERROR;
vNull.scode = DISP_E_PARAMNOTFOUND;
vSql.vt=VT_BSTR;
vSql.bstrVal=SysAllocString(strSql);
hr=pRS->Open(vSql,vNull,adOpenKeyset,adLockOptimistic,adCmdText);
*ppRS=pRS;
(*ppRS)->AddRef();
SysFreeString(vSql.bstrVal);
return SUCCEEDED(hr);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -