📄 dbcopier.cpp
字号:
// DBCopier.cpp: implementation of the DBCopier class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "dbporter.h"
#include "DBCopier.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
DBCopier::DBCopier()
{
HRESULT hr=0;
CoInitialize(NULL);
hr=m_SourceConn.CreateInstance(__uuidof(Connection));
hr=m_TargetConn.CreateInstance(__uuidof(Connection));
hr=m_TargetRS.CreateInstance(__uuidof(Recordset));
hr=m_SourceRS.CreateInstance(__uuidof(Recordset));
}
DBCopier::~DBCopier()
{
try
{
if (adStateOpen==m_SourceRS->State)
{
m_SourceRS->Close();
}
}catch(_com_error& e){}
try
{
if (adStateOpen==m_TargetRS->State)
{
m_TargetRS->Close();
}
}catch(_com_error& e){}
try
{
if (adStateOpen==m_SourceConn->State)
{
m_SourceConn->Close();
}
}catch(_com_error& e){}
try
{
if (adStateOpen==m_TargetConn->State)
{
m_TargetConn->Close();
}
}catch(_com_error& e){}
}
BOOL DBCopier::ConnectSource(CString &constr, CString &login, CString &pass, CString &table,CString& error)
{
try
{
if (m_SourceConn->State==adStateOpen)
{
m_SourceConn->Close();
}
m_SourceConn->Open(_bstr_t(constr),_bstr_t(login),_bstr_t(pass),adConnectUnspecified);
}catch(_com_error& e)
{
error=error+(char*)e.Description();
return FALSE;
}
try
{
if (adStateOpen==m_SourceRS->State)
{
m_SourceRS->Close();
}
m_SourceRS->CursorLocation=adUseClient;
m_SourceRS->Open(_bstr_t(table),_variant_t((IDispatch*)m_SourceConn,true),adOpenStatic,adLockOptimistic,adCmdTable);
}
catch(_com_error& e)
{
error=error+(char*)e.Description();
return FALSE;
}
return TRUE;
}
BOOL DBCopier::ConnectTarget(CString &constr, CString &login, CString &pass, CString &table,CString& error)
{
try
{
if (m_TargetConn->State==adStateOpen)
{
m_TargetConn->Close();
}
m_TargetConn->Open(_bstr_t(constr),_bstr_t(login),_bstr_t(pass),adConnectUnspecified);
}catch(_com_error& e)
{
error=error+(char*)e.Description();
return FALSE;
}
try
{
if (adStateOpen==m_TargetRS->State)
{
m_TargetRS->Close();
}
m_TargetRS->CursorLocation=adUseClient;
m_TargetRS->Open(_bstr_t(table),_variant_t((IDispatch*)m_TargetConn,true),adOpenStatic,adLockOptimistic,adCmdTable);
}
catch(_com_error& e)
{
error=error+(char*)e.Description();
return FALSE;
}
return TRUE;
}
_RecordsetPtr DBCopier::GetTargetRecordset()
{
return m_TargetRS;
}
_RecordsetPtr DBCopier::GetSourceRecordset()
{
return m_SourceRS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -