4814|9

59

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请问谁写过evc控制sql ce 20和sql server 2000同步的程序~求一个~ 不知道我写的这个怎么才能用~我连个资料都找不到 [复制链接]

大哥们~
我是这样子写的
不知道能不能用。我用了没什么效果
void CAdoDlg::InitializeReplication()
{
        ISSCEMerge *CEMerge;
        ISSCEErrors  *pISSCEErrors = NULL;
        HRESULT          hr;
        BSTR            bstr = NULL;
        BOOL            fInitialized = FALSE;
        LONG            lPubChanges;
        LONG            lPubConflicts;
        LONG            lSubChanges;
        /* Create the Replication object. */
        CoCreateInstance(CLSID_Replication, NULL, CLSCTX_INPROC_SERVER,IID_ISSCEMerge, (LPVOID *) &CEMerge);



        //初始化阶段,对同步对象的19项属性进行设置
        CEMerge->put_InternetURL(L"http://172.21.37.130/sqlce/sscesa20.dll");
        CEMerge->put_InternetLogin(L"BJUT-D462809A91");
        CEMerge->put_InternetPassword(L"");
        CEMerge->put_Publisher(L"BJUT-D462809A91");
        CEMerge->put_PublisherDatabase(L"foodInfo");
        CEMerge->put_Publication(L"mydb");
        CEMerge->put_PublisherSecurityMode(DB_AUTHENTICATION);
        CEMerge->put_PublisherLogin(L"sa");
        CEMerge->put_PublisherPassword(L"sa");
        CEMerge->put_PublisherNetwork(DEFAULT_NETWORK);
        CEMerge->put_Subscriber(L"");
        CEMerge->put_SubscriberConnectionString(L"Provider=microsoft.sqlserver.oledb.ce.2.0;Data Source=\\mydb.sdf");
        CEMerge->put_Distributor(L"mydb");
        CEMerge->put_DistributorNetwork(DEFAULT_NETWORK);
        CEMerge->put_DistributorSecurityMode(DB_AUTHENTICATION);
        CEMerge->put_DistributorLogin(L"");
        CEMerge->put_DistributorPassword(L"");
        CEMerge->put_ExchangeType(BIDIRECTIONAL);
        CEMerge->put_Validate(NO_VALIDATION);
        CEMerge->Initialize();
        //同步阶段
        CEMerge->Run();
        //结束阶段,进行对同步对象的结束和释放
        CEMerge->Terminate();
        CEMerge->Release();
}

最新回复

好的!谢谢了!  详情 回复 发表于 2008-1-23 12:34
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
置顶一下~谁能给我个示例程序~小弟感激不尽
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
   代码走查了一下你的程序。基本上没什么问题。
设置方面必须,
1)http://172.21.37.130/sqlce/sscesa20.dll, 通过IE可以访问。
2)PDA上的根目录下要有数据库文件:mydb.sdf
 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(初级)

4
 
如果楼主调试通过请把心得讲下,我正调试中,没解决,郁闷!
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
我采用了rda,看似比合并复制简单~
我觉得我的 sql server 和 sql ce都配好了~
但是我发现跳痛需要运气,我没有什么资料,全都是瞎梦乱拽的程序,自己组装的。我得rda的pull是这样写的
        ISSCERDA *pCERDA = NULL;
        BSTR bStr = NULL;
        BSTR bConnectStr = NULL;
        BSTR bQueryStr = NULL;
        BSTR bLocalConnectStr = NULL;
        BSTR bLocalTableName = NULL;
        BSTR bErrorTableName  = NULL;
        RDA_TRACKOPTION trackOption = TRACKINGOFF;
        SYSTEMTIME                        systemtime;                                        // 系统时间
        double                                timeTotal;                                        // 总共消耗的时间
        __int64                                timeStart = 0;                                // 开始操作时的时间
        __int64                                timeStop;                                        // 结束操作时的时间
        WCHAR        wszBuffer[512];
        //得到pCERDA接口
        HRESULT hr = CoCreateInstance(CLSID_RemoteDataAccess, NULL, CLSCTX_INPROC_SERVER, IID_ISSCERDA, (LPVOID *)&pCERDA);
        ASSERT(hr == S_OK);
        ASSERT(pCERDA != NULL);
        //1、设置Internet URL
        bStr = SysAllocString(_T("http://BJUT-D462809A91/sqlce/sscesa20.dll"));
        pCERDA->put_InternetURL(bStr);
        SysFreeString(bStr);
        //2、设置Internet userName
        bStr = SysAllocString(L"BINBIN");
        pCERDA->put_InternetLogin(bStr);
        SysFreeString(bStr);       
        //3、设置Internet password
        bStr = SysAllocString(L"");
        pCERDA->put_InternetPassword(bStr);
        SysFreeString(bStr);
        //4、得到跟踪类型
        /*if (dlgPull.m_tracking == L"TRACKINGON")
        {
                trackOption = TRACKINGON;
        }else if (dlgPull.m_tracking == L"TRACKINGOFF")
        {
                trackOption = TRACKINGOFF;
        }else if (dlgPull.m_tracking == L"TRACKINGON_INDEXES")
        {
                trackOption = TRACKINGON_INDEXES;
        }else if(dlgPull.m_tracking == L"TRACKINGOFF_INDEXES")
        {
                trackOption = TRACKINGOFF_INDEXES;
        }else
        {
                trackOption = TRACKINGOFF;
        }*/
        trackOption = TRACKINGON;
        //5、设置错误表名
        bErrorTableName = SysAllocString(L"errorTable");
        //6、设置服务器连接串
        bConnectStr = SysAllocString(L"provider=sqloledb; data source=BJUT-D462809A91; Initial Catalog=mydatabase; user id=sa; password=sa");
        //7、设置本地数据库连接串
        bLocalConnectStr = SysAllocString(L"Provider=microsoft.sqlserver.oledb.ce.2.0;Data Source=\\My Documents\\mydb.sdf");
        pCERDA->put_LocalConnectionString(bLocalConnectStr);
        SysFreeString(bStr);
        //8、设置本地表名
        bLocalTableName = SysAllocString(L"food");       
        //9、设置查询的SQL语句
        bQueryStr = SysAllocString(L"select * from food");
        //记录获取服务器数据前的时间
        //GetLocalTime(&systemtime);
        //SystemTimeToFileTime(&systemtime, (FILETIME*)&timeStart);
    //获取服务器数据
        hr = pCERDA->Pull(bLocalTableName,
                        bQueryStr,
                        bConnectStr,
                        trackOption,
                        bErrorTableName);
        //SysFreeString(bLocalTableName);
        SysFreeString(bQueryStr);
        SysFreeString(bConnectStr);
        SysFreeString(bErrorTableName);
        if (SUCCEEDED(hr))
        {
                //记录获取服务器数据后的时间
                //GetLocalTime(&systemtime);
                //SystemTimeToFileTime(&systemtime, (FILETIME*)&timeStop);
        //记录获取服务器数据的总时间
                //timeTotal = ((double)(timeStop - timeStart) / 10000000);
                swprintf(wszBuffer, _T("从服务器获取数据成功\r\n\r\总共消耗 = %8.3f秒"), timeTotal);
                AfxMessageBox(wszBuffer);
        }
        else
        {       
                //显示获取服务器数据错误
                ISSCEErrors  *pISSCEErrors = NULL;
                if(SUCCEEDED(hr = pCERDA->get_ErrorRecords(&pISSCEErrors)))
                {
                        AfxMessageBox(L"服务器数据错误");
                        //ShowErrors(pISSCEErrors);
                        pISSCEErrors->Release();
                }
        }
        //释放远程访问接口
        pCERDA->Release();

这是我的rda  PULL程序代码
最后走到了AfxMessageBox(L"服务器数据错误");这一步。。。
就是我还没成功~我上网找资料查,怎么也看不出来自己哪里错了。。。
我今天就要去交作业了~~这部分算是完不成了~等交完了作业我在研究~

心得就是!痛苦!!!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
TO comiscience:
不知道你的程序是否参考了《EVC 高级编程及其应用开发》中的RDA的例子,我运行书中的例子出错。
HRESULT   hr   =   CoCreateInstance(CLSID_RemoteDataAccess,   NULL,   CLSCTX_INPROC_SERVER,   IID_ISSCERDA,   (LPVOID   *)&pCERDA);
该句通不过!
不知道什么原因!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
to: comiscience
我也遇到过你的问题,后来发现是sql server 配置有问题!
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

8
 
好的!谢谢~
HRESULT       hr       =       CoCreateInstance(CLSID_RemoteDataAccess,       NULL,       CLSCTX_INPROC_SERVER,       IID_ISSCERDA,       (LPVOID       *)&pCERDA);   
这句话我跳过去了~不知道为什么
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

9
 
没有初始化,加
HRESULT   hr   =   CoInitializeEx(NULL,   COINIT_MULTITHREADED   );
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

10
 
好的!谢谢了!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表