跨数据库Copy的一个类的代码

简介: 跨数据库Copy的一个类的代码

跨数据库Copy的一个类的代码 希望对大家能有所帮助


#include "StdAfx.h"
#include "./dbcopyclass.h"
CDbCopyClass::CDbCopyClass(void)
{
 ::CoInitialize(NULL);
 pconn.CreateInstance(__uuidof(Connection));
 pSourceConn.CreateInstance(__uuidof(Connection));
 prs.CreateInstance(__uuidof(Recordset));
 m_pCmd.CreateInstance(__uuidof(Command));
 m_SourceRs.CreateInstance(__uuidof(Recordset));
 m_DesRs.CreateInstance(__uuidof(Recordset));
/// m_fields.CreateInstance(__uuidof(Fields));
 //m_fieldPtr.CreateInstance(__uuidof(FieldPtr));
}
CDbCopyClass::~CDbCopyClass(void)
{
 prs.Release();
 m_SourceRs.Release();
 m_DesRs.Release();
 pconn.Release();
 pSourceConn.Release();
 m_pCmd.Release();
 ::CoUninitialize();
}
/***************************************************************************************************
** 函数名  :RestoreData
** 输  入  :const CString &desc 目的数据库路径
**           const CString &source 源数据库路径
** 输    出:
** 功能描述:将源数据库中的内容导入到目的数据库中
** 全局变量:
** 调用模块:
** 作    者:刘志永
** 日    期:2008-9-10
** 修    改:
** 日    期:
** 版    本:
***************************************************************************************************/
BOOL CDbCopyClass::RestoreData(const CString &desc, const CString &source)
{
 try
 {
  CString tmpFrom(source);
  CString tmpTo(desc);   
  char buf[512];
  buf[0]='0';
  strcpy(buf,"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=");
  strcat(buf,tmpTo);  
  strcat(buf,";Persist Security Info=False");
  char bufSource[512];
  bufSource[0]='0';
  strcpy(bufSource,"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=");
  strcat(bufSource,tmpFrom); 
  strcat(bufSource,";Persist Security Info=False");
  pconn->ConnectionString=buf; 
  pSourceConn->ConnectionString=bufSource;
  pconn->Open("","","",adConnectUnspecified);
  pSourceConn->Open("","","",adConnectUnspecified);
  prs=pSourceConn->OpenSchema(adSchemaTables);
  m_pCmd->ActiveConnection = pconn;
  while (!prs->adoEOF)
  {
   if (!strcmp((_bstr_t)prs->Fields->GetItem("TABLE_TYPE")->Value,"TABLE"))
   {    
     _bstr_t bstTableName=(_bstr_t)prs->Fields->GetItem("TABLE_NAME")->Value;
        if (m_SourceRs->GetState()==1)
     {
      m_SourceRs->Close();
     }  
     if (m_DesRs->GetState()==1)
     {
      m_DesRs->Close();
     }
     if (bstTableName==_bstr_t("User"))
     {
      bstTableName=_bstr_t("[User]");
     }
     _bstr_t strSqlDel="Delete From "+bstTableName;
     //m_pCmd.
     m_pCmd->CommandText=strSqlDel;
     m_pCmd->CommandType=adCmdText;
     m_pCmd->Execute(NULL,NULL,adCmdText);
     char buf[512];
     buf[0]='0';
     strcpy(buf," SELECT * From ");
     strcat(buf,bstTableName);
     m_SourceRs->CursorType = adOpenStatic;
     m_SourceRs->CursorLocation = adUseClient;
     m_DesRs->CursorType = adOpenStatic;
     m_DesRs->CursorLocation = adUseClient;
     m_SourceRs->Open(buf,_variant_t((IDispatch*)pSourceConn,TRUE),adOpenStatic,adLockOptimistic,adCmdUnknown);
     m_DesRs->Open(buf,_variant_t((IDispatch*)pconn,TRUE),adOpenStatic,adLockOptimistic,adCmdUnknown);
     int nFieldsCount=m_SourceRs->Fields->Count;
     while (!m_SourceRs->adoEOF)
     {
      m_DesRs->AddNew();
      for (int nLoop=0;nLoop<nFieldsCount;nLoop++)
      {
       _variant_t vtIndex;
       vtIndex.vt = VT_I2;
       vtIndex.iVal = nLoop;
       _variant_t tFieldValue=m_SourceRs->Fields->GetItem(vtIndex)->Value;
       m_DesRs->Fields->GetItem(vtIndex)->put_Value(tFieldValue);
      }
      m_DesRs->Update();
      m_SourceRs->MoveNext();
     }
    prs->MoveNext();
  }
   else
    prs->MoveNext();
  }
  prs->Close();
  pconn->Close();
  pSourceConn->Close(); 
  return TRUE;
 }
 catch (...)
 {
  return FALSE;
 }
}


相关文章
|
7月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
8月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
790 12
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
8月前
|
安全 druid Nacos
0 代码改造实现应用运行时数据库密码无损轮转
本文探讨了敏感数据的安全风险及降低账密泄漏风险的策略。国家颁布的《网络安全二级等保2.0标准》强调了企业数据安全的重要性。文章介绍了Nacos作为配置中心在提升数据库访问安全性方面的应用,并结合阿里云KMS、Druid连接池和Spring Cloud Alibaba社区推出的数据源动态轮转方案。该方案实现了加密配置统一托管、帐密全托管、双层权限管控等功能,将帐密切换时间从数小时优化到一秒,显著提升了安全性和效率。未来,MSE Nacos和KMS将扩展至更多组件如NoSQL、MQ等,提供一站式安全服务,助力AI时代的应用安全。
469 14
|
9月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
8月前
|
SQL 数据建模 关系型数据库
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
1619 4
|
11月前
|
人工智能 前端开发 JavaScript
代码采纳率从 22% 到 33%,通义灵码辅助数据库智能编码实践
通义灵码本质上是一个AI agent,它已经进行了大量的优化。然而,为了更完美或有效地调用模型的潜在能力,我们在使用时仍需掌握一些技巧。通常,大多数人在使用通义灵码时会直接上手,这是 AI agent 的一个优势,即 zero shot 使用,无需任何上下文即可直接使用通义灵码的能力。
|
7月前
|
安全 Java Nacos
0代码改动实现Spring应用数据库帐密自动轮转
Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
374 6
|
存储 安全 API
陪玩平台中支付与结算模块的代码,陪玩系统数据库设计与代码实现
第三方支付平台对接涉及与微信支付、支付宝等API接口的调用,确保用户支付流程顺畅。结算模块根据业务规则计算陪玩师收益,强调安全性、异常处理、可扩展性和日志记录。数据库设计涵盖用户、陪玩者、订单等信息的存储管理,确保系统稳定运行。
344 12

热门文章

最新文章