欲实现不同数据库(MSSQLSERVER,ORICLE,等)定时向目标数据库(MSSQLSERVER)更新数据,以及基本的查询,修改,以及备份功能,想参照些前辈门的代码,可以提供吗?

解决方案 »

  1.   

    DTS
    Sql Server的企业管理器里面
    数据转换服务
    新建包
    创建好数据转换包以后
    退出编辑
    右键/调度里面设置时间
      

  2.   

    代码操作参考http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=193899
    VC实现DTS数据转换服务的简易代码
      

  3.   

    huahu:你好,如果用你提供的那段vc代码,还需要在数据库中建立数据转换包吗?
    DTS::Package2是个什么东西?
      

  4.   

    huahu:
    你好!,能对你提供的那段代码提供注释吗?
    谢谢
      

  5.   

    呵呵,是hahu,不是huahu(花狐??)
    这和ADO的_ConnectionPtr之类的Com对象是类似的
    #import  "C:\\Program  Files\\Microsoft  SQL  Server\\80\\tools\\binn\\dtspkg.dll"  \  
               rename("EOF","IsEOF")  rename("BOF","IsBOF")  
    \\导入库,VC会自动生成智能指针DTS是命名空间,_Package2Ptr是智能指针
    \\编译以后可以看看debug目录下面的tlh文件
    void  CChildView::OpenDtsFile(CString  strPathName)  
    {  
               //企业管理器//数据转换服务//本地包//另存为DTS文件 
               //先根据上面的步骤创建DTS包,下面是运行这个包 
               //下面这些对象和在数据转换服务中都是对应的
               DTS::_Package2Ptr  m_pPackage2;  //包
               DTS::TaskPtr            m_pTask; //任务 
               DTS::StepPtr          m_pStep;   //步骤
               DTS::ExecutePackageTaskPtr  m_pExeTask;  //呵呵,大概是运行包的任务
               try  
               {  
                           m_pPackage2.CreateInstance(__uuidof(DTS::Package2));  
                           m_pPackage2->FailOnError=true;  
                           m_pStep=m_pPackage2->Steps->New();  
                           m_pTask=m_pPackage2->Tasks->New(_bstr_t("DTSExecutePackageTask"));  //根据这个字符串创建运行包的任务
                           m_pExeTask=m_pTask->CustomTask;  //
                           m_pExeTask->FileName=_bstr_t(strPathName);  
                           m_pExeTask->Name=_bstr_t("ExePkgTask");  
                             
                           m_pStep->TaskName=m_pExeTask->Name;  
                           m_pStep->Name=_bstr_t("ExePkgStep");  
                           m_pStep->ExecuteInMainThread=true;  
                             
                           m_pPackage2->Steps->Add(m_pStep);  
                           m_pPackage2->Tasks->Add(m_pTask);  
                             
                           m_pPackage2->Execute();  
                             
                             
                           CString  strMsg;  
                           strMsg.Format("%s,数据转换%d个任务,%d个步骤成功",  
                                       strPathName,m_pPackage2->Tasks->Count,m_pPackage2->Steps->Count);  
                           AfxMessageBox(strMsg);  
                           m_pExeTask=NULL;  
                           m_pTask.Release();  
                           m_pTask=NULL;  
                           m_pStep.Release();  
                           m_pStep=NULL;  
                           m_pPackage2.Release();  
                           m_pPackage2=NULL;  
     
               }  
               catch(_com_error  &e)  
               {  
                           AfxMessageBox(_bstr_t(e.Description()));  
               }  
    //具体的描述也是自己想的,根据里面的VB代码转换过来
    //也可以直接代码创建包,但是这样可能比较麻烦
    //有问题,可以直接给我发短信息