首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

RDA屡次失败!快疯了!有大侠救救小弟我吗?

2012-01-14 
RDA屡次失败!!!!!快疯了!!!有大侠救救我吗????????????????????????????????我最近做一个C/S模式的PocketP

RDA屡次失败!!!!!快疯了!!!有大侠救救我吗????????????????????????????????
我最近做一个C/S模式的Pocket   PC应用程序,用RDA把SQL   Server2000上的数据库(名为pacs,内有patient和report两个表)数据拉到本地数据库(名为PocketPACS.sdf)上,IIS的虚拟目录sqlce的权限是”Anonymous   access”,   并且我在IE和Pocket   IE里输入“http://127.0.0.1:56/sqlce/sscesa20.dll”(我在IIS里发现默认站点停止了,必须把原来的80端口改掉才能重新启动,于是我把端口改成了56),都能成功显示”SQL   Server   CE   Server   Agent”.
      我的SQL   Server2000(SP3版)、SQL   Server   CE2.0(SP3版)、VS2005都装在了一台机子上,其中我的机子操作系统是XP,所以SQL用的个人版.
      代码如下:
public   string   strDBFile   =   @ "My   Documents\PocketPACS.sdf ";
public   string   strConnLocal   =   "Data   Source= "   +   @ "My   Documents\PocketPACS.sdf ";
public   string   strConnRemote   =   "Provider=Microsoft.SQLSERVER.OLEDB.CE.2.0;Integrated   Security=SSPI;User   ID   =   WWS//IUSR_WWS;Initial   Catalog=pacs;Data   Source=PocketPACS.sdf; ";
public   string   strURL   =   "http://127.0.0.1:56/sqlce/sscesa20.dll ";


private   void   menuLogin_Click_1(object   sender,   System.EventArgs   e)
{
doctorsearch   =   new   DoctorSearch();
if((textBox1.Text== "tsmc ")&&(textBox2.Text== "tsmc "))
{
doctorsearch.Show();
Cursor.Current   =   Cursors.WaitCursor;
if(File.Exists(strDBFile))
{
File.Delete(strDBFile);
}
SqlCeEngine   dbEngine   =   new   SqlCeEngine();
dbEngine.LocalConnectionString   =   strConnLocal;
try
{
dbEngine.CreateDatabase();
}
catch(SqlCeException   exSQL)
{
MessageBox.Show( "Unable   to   create   database "   +   exSQL.Errors[0].Message);
}
SqlCeRemoteDataAccess   rdaNW   =   new   SqlCeRemoteDataAccess();
try
{
        rdaNW.LocalConnectionString   =   strConnLocal;
rdaNW.InternetUrl   =   strURL;
rdaNW.InternetLogin   =   " ";
rdaNW.InternetProxyPassword   =   " ";
rdaNW.Pull( "patient ", "SELECT   *   FROM   patient ",strConnRemote,RdaTrackOption.TrackingOnWithIndexes, "ErrorDoctor ";
}
catch(SqlCeException   exSQL)
{
Errors.ShowErrors(exSQL);
}
finally
{
rdaNW.Dispose();
}
Cursor.Current   =   Cursors.Default;
}
else
        MessageBox.Show( "Wrong   infromation.Please   check   it   again ");
}
但运行之后出现以下两个错误:
Error   Code:   80004005
Message:   An   internal   error   occurred.[ID,,,,,]
Minor   Err:28574
Source:   Microsoft   SQL   Server   2000   Windows   CE   Edition

Error   Code:80004005
Message:[DBNETLIB][Connection   Open(connect())]SQL   Server不存在或拒绝访问
Minor   Err:   17
Source:   Microsoft   OLEDB   Provider   for   SQL   Server
第一个错误在网上查了半天没有什么收获,于是决定从第二个错误入手,下面是我的尝试和结果:
ping   169.254.8.169     成功
ping   wws                         成功
ping   127.0.0.1             成功
telnet   169.254.8.169   1433     不能打开到主机的连接,在端口1433:连接失败
telnet   169.254.8.169         不能打开到主机的连接,在端口23:连接失败


netstat   –a             未见1433端口被侦听
查看SQL   Server日志,只见:SQL   Server   正在监听   Shared   Memory,   Named   Pipes
                                      未见SQL   Server在监听TCP或1433端口
    于是断定是因为SQL   Server不能侦听1433端口,检查SQL   Server的服务器网络实用工具和客户端网络实用工具,发现都已经启用了命名管道和TCP/IP协议,并且TCP/IP的属性中都使用的默认端口1433,我的防火墙关了呀,并且SQL也是SP3的补丁呀,并且我试了把服务器网络实用工具和客户端网络实用工具的TCP/IP协议的默认端口改成2433或56也不行,SQL   Server依然不能侦听2433或56端口.
      考虑到我的SQL2000是个人版,安装时默认实例是灰色的,于是我只能起了个实例名sql2000,结果SQL   Server服务管理器的 "服务器 "下拉菜单里有三个:WWS、WWS\SQL2000、WWS\SQLEXPRESS,但不论启动哪个,SQL   Server都不能侦听1433,用netstat   –a   也看不到1433被侦听,快疯了,求各位大侠救救我!!!提些建议也好!
小生在此先谢过了



[解决办法]
好像是你的连接有问题
"Provider=sqloledb; "
+ "Data Source=192.168.1.150; "
+ "Initial Catalog=Northwind; "
+ "User Id=sa; "
+ "Password=sa; "
+ "Integrated Security=SSPI; ";

参考看看:http://community.csdn.net/Expert/topic/5703/5703916.xml?temp=.6019709
[解决办法]
如果PDA上面IIS可以访问。你把Integrated Security=true 设置为true看看。
还不行。你就发我有邮箱我试试看。ghdvb@126.com
[解决办法]
不用 CE 直接连接数据库就不会有这么多麻烦了
另外 1433 端口是不能用的 通不过无线网络

热点排行