4505|8

84

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

SQLCE连接数据库遇到的问题。错误80040E21 [复制链接]

用SQLCE在WINCE6上远程连接服务器SQL2000数据库。
两个例子代码。

第一个是演示ISSCERDA->SubmitSQL这个方法的。参数配置:
_T("http://192.168.1.77/sqlce/sqlcesa30.dll")
_T("provider=sqloledb; data source=ACER-05; Initial Catalog=dbtest; user id=sa; password=password")
_T("UPDATE SERVERTIME SET CurTime=Getdate()")
执行远程SQL语句
hr = pCERDA->SubmitSQL(bQueryStr,bConnectStr);
可以成功运作。


第二个是演示PULL方法的。
已经在WINCE上创建了空数据文件:\\My Documents\\DB_Students.sdf,密码password,
参数配置:
_T("http://192.168.1.77/sqlce/sqlcesa30.dll"))
        , m_internetUsername(_T("sa"))
        , m_internetPassword(_T("password"))
        , m_tracking(_T("TRACKINGON"))
        , m_errorTableName(_T("tblErrors"))
        , m_connectStr(_T("provider=sqloledb; data source=ACER-05; Initial Catalog=dbtest; user id=sa; password=password"))
        , m_localConnectStr(_T("Provider=microsoft.sqlserver.oledb.ce.3.0;Data Source=\\My Documents\\DB_Students.sdf;password=password"))
        , m_localTableName(_T("students"))
        , m_queryStr(_T("select * from students"))

//获取服务器数据
                hr = pCERDA->Pull(bLocalTableName,
                         bQueryStr,
                           bConnectStr,
                         trackOption,
                        bErrorTableName);


结果执行错误,提示的:
SQL Mobile在打开数据库时遇到问题。[,,,,,,]'
NUMBER:80040E21
NATIVE_ERROR:28559

最新回复

这个问题的原因已经发现了。。 1,如果数据文件设置密码,会报错80040E21,提示打开数据库出现问题。 2,PULL的方式是TRACKINGON,也就是跟踪变化时, 会报错80040E3F,提示表已经存在,具体解决方法还没找到。  详情 回复 发表于 2009-3-4 14:58
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
学习了,还能这么用呀
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
远程连接的应该是对的,因为submitsql这个方法是执行成功的。
估计是本地数据库的连接上出了问题,但我找不到,大手赶紧来帮忙啊。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
错误:80040E21 ,的意思是:
Multiple-step operation generated errors. Check each status value. No work was done.

这个英文的意思很清楚的,不用翻译吧!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 91program 的回复:
错误:80040E21 ,的意思是:
Multiple-step operation generated errors. Check each status value. No work was done.

这个英文的意思很清楚的,不用翻译吧!


这个错误信息是在哪里查的啊?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
我也搞SqlCE的同步,但没有遇到过这个错误。
有一点不知道楼主注意了没有:如果拉数据下来的话,那么要求被拉的表必须有一个Identity的主键。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 5 楼 cftxlin 的回复:
我也搞SqlCE的同步,但没有遇到过这个错误。
有一点不知道楼主注意了没有:如果拉数据下来的话,那么要求被拉的表必须有一个Identity的主键。


设置了主键。

上面那个应该是密码的问题,我前面建数据文件的时候,设置了密码,现在把密码去掉了,不过又变成了另外一个问题:

提示指定的表已存在, 错误80040E3F。可我是新建的数据文件啊,怎么可能表已经存在呢。
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 5 楼 cftxlin 的回复:
我也搞SqlCE的同步,但没有遇到过这个错误。
有一点不知道楼主注意了没有:如果拉数据下来的话,那么要求被拉的表必须有一个Identity的主键。



我基本上就是下面这样的代码了。
服务器是SQL2000,
mobile6上运行的是isqlw30.
服务器名ACER-05,数据库名dbtest,帐号sa,密码password,表名students,主键ID。
PDA上,数据文件名:DB_Students.sdf,密码没有,路径\\My Documents\\DB_Students.sdf,表没有。



  1. HRESULT hr = CoCreateInstance(CLSID_RemoteDataAccess, NULL, CLSCTX_INPROC_SERVER, IID_ISSCERDA, (LPVOID *)&pCERDA);
  2. pCERDA->put_InternetURL("http://192.168.1.77/sqlce/sqlcesa30.dll");
  3. pCERDA->put_InternetLogin("sa");
  4. pCERDA->put_InternetPassword("password");       
  5. pCERDA->put_LocalConnectionString("Provider=microsoft.sqlserver.oledb.ce.3.0;Data Source=\\My Documents\\DB_Students.sdf");
  6.        
  7. pCERDA->Pull("students", "select * from students", "provider=sqloledb; data source=ACER-05; Initial Catalog=dbtest; user id=sa; password=password",
  8. TRACKINGON, "tblErrors");

复制代码
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

9
 
这个问题的原因已经发现了。。

1,如果数据文件设置密码,会报错80040E21,提示打开数据库出现问题。

2,PULL的方式是TRACKINGON,也就是跟踪变化时, 会报错80040E3F,提示表已经存在,具体解决方法还没找到。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表