22,209
社区成员
发帖
与我相关
我的任务
分享
strcommand.Format(_T("insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source=%s;User ID=Admin;Password=')...%s (%s) select %s from %s"),m_strAccessPath,VIEW_DATA,m_strDataColumnWithOutID,m_strDataColumnWithOutID,VIEW_DATA);
//首先要定义两个连接对象和记录集
_ConnectionPtr m_pConnection_sql; // sql数据库
_ConnectionPtr m_pConnection_access; // access数据库
_RecordsetPtr m_pRecordset_sql; // sql记录集
_RecordsetPtr m_pRecordset_access; // access记录集
HRESULT hr;
_variant_t vValue;
//连接Access数据库
//if(m_pConnection_access->State)
// m_pConnection_access->Close(); ///如果已经打开了连接则关闭它
try
{
hr=m_pConnection_access.CreateInstance("ADODB.Connection");//创建Connection对象
if (SUCCEEDED(hr))
{
hr=m_pConnection_access->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Test.mdb","","",adModeUnknown);//连接SQL只需修改语句,将m_pConnection_access换成m_pConnection_sql,具体怎么连接就不贴出来了,网上很多
}
}
catch (_com_error e)//捕捉异常
{
CString errormessage;
errormessage.Format(_T("连接数据库失败!\r\n错误信息:%s"),e.ErrorMessage());
AfxMessageBox(errormessage);//显示错误信息
}
//注意连接完sql数据库后还要使用“USE 数据库名” 指明具体是哪个数据库
//获取sql记录集
//创建记录集对象
m_pRecordset_sql.CreateInstance(__uuidof(Recordset));
//取得表中的记录
m_pRecordset_sql->Open(bstrSQL,
m_pConnection_sql.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
//获取access记录集
m_pRecordset_access.CreateInstance(__uuidof(Recordset));
//取得表中的记录
m_pRecordset_access->Open(bstrSQL,
m_pConnection_access.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
try
{
//插入SQL的记录集到Access
while (!m_pRecordset_sql->adoEOF)
{
m_pRecordset_access->AddNew();
for (int i=0;i<m_pRecordset_sql->Fields->Count;i++)
{
vValue=m_pRecordset_sql->GetCollect(_variant_t((long)i));
m_pRecordset_access->PutCollect(_variant_t((long)i),vValue);
}
m_pRecordset_access->Update();
m_pRecordset_sql->MoveNext();
}
//关闭记录集和链接
if(m_pRecordset_sql!=NULL)
m_pRecordset_sql->Close();
if(m_pConnection_sql!=NULL)
m_pConnection_sql->Close();
if(m_pRecordset_access!=NULL)
m_pRecordset_access->Close();
if(m_pConnection_access!=NULL)
m_pConnection_access->Close();
}
catch(_com_error e)///捕捉异常
{
CATCH_ERROR;
return false;
}