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

📄 dbcopier.cpp

📁 visual c++ 实例编程
💻 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 + -