用C#开发PDA移动设备,如何直接连接SQL Server 2005 数据库?

时间:2021-12-17 01:57:14
用C#开发PDA移动设备,如何直接连接SQL Server 2005 数据库?
最近开发一个餐饮点菜的PDA移动设备,我是一个菜鸟,这是我的第一个项目,用的是VS2005的pocket pc 2003开发,c#语言,客户要求从PDA移动设备上的应用程序直接操作前台的远程SQL Server 2005数据库中的数据,以下是我的用using System.Data.SqlClient;命名空间下的ADO.NET的数据操作类的代码段,是测试代码,忘高手指点一下,报错信息:SQL Server 不存在或访问被拒绝
              //连接字符串
              string CONN_STRING_REMOTE = "database=XiaoTest1;server=192.168.0.31 ;Trusted_connection=false;user id=sa;password=;";
            //SQL语句
            string SELECT_EMPLOYE = "select * from employe";
              SqlConnection conn = new SqlConnection();
            conn.ConnectionString = this.CONN_STRING_REMOTE;
            SqlCommand comm = new SqlCommand();
            comm.CommandType = CommandType.Text;
            comm.CommandText = this.SELECT_EMPLOYE;
            comm.Connection = conn;
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = comm;
            DataTable dt = new DataTable();
            try
            {
                da.Fill(dt);
            }
            catch (SqlException ex)
            {
                string message = ex.Message;
            }
            return dt;
经过初步分析:连接字符串有问题,望大虾们给指点以下,我是小公司的,自己本身刚参加完技术培训进入这个行业才1个月,这是第一个项目,公司太小,所以没有技术支持和高手,老板不会.NET,所以要我自己研究,但是小弟能力实在有限,希望世外高人快点现身,帮解决问题,没分就5分,希望大虾帮忙,以后有分啦,会补足的。

19 个解决方案

#1


防火墙关掉
打SP1或SP2补丁
换个windows 2000试试
用PC端测试下是否能连接你的数据库服务器

#2


     string strConn="Server=192.168.1.102;DataBase=pdadb;User ID=sa;Password=sa;Persist Security Info=True;";

这是sql2000的联接串

#3


//连接字符串 
              string CONN_STRING_REMOTE = "database=XiaoTest1;server=192.168.0.31 ;Trusted_connection=false;user id=sa;password=;"; 



连接字符串有问题,一看就知道这个字串是联不上SQL2005的。SQL2005要在IP后加上SQL服务名

#4


有点难度哦

#5


点菜系统我也在做,我是采用SQLCE连接PC数据库,然后采用RDA方式与数据库进行数据同步的。

#6


可以用直联的方式呀,反正移动区域小的

#7


我也是最近学,当时赶时间,没有自己去细学,很汗……我当时通过VS2005里集成的添加数据源的向导添加到SQL Server 2005的连接。添加后会自动生成的Data Adapter,很好用。

#8


用webservice在搞,如果是局域网,可以用socket。但是,最好不要传递DataSet,应该自己定义一些对象。
数据RDA同步数据不是好选择。根据实际情况应该采用数据增量同步,避免多余的数据同步。毕竟mobile的资源是有限的。

#9


引用 8 楼 fumingxia19 的回复:
用webservice在搞,如果是局域网,可以用socket。但是,最好不要传递DataSet,应该自己定义一些对象。 
数据RDA同步数据不是好选择。根据实际情况应该采用数据增量同步,避免多余的数据同步。毕竟mobile的资源是有限的。


请教楼上的的什么是“数据增量同步,避免多余的数据同步”?谢谢!

#10


哪只能自己对已上传数据打上标记,下次同步的时候就只传未打标志的数据

#11


不建议楼主通过PDA直连sqlserver 建议通过webservice建立中间层!
这样在网络情况相同的情况下 不会影响速度!

#12


LZ
不要这样连接,你最好把业务处理的逻辑搞到WEBSERVICES里,然后手机调用.我一直都是这么做的

#13


直接联的方式用的速度也快的

#14


引用 9 楼 plazuopeng 的回复:
引用 8 楼 fumingxia19 的回复:
用webservice在搞,如果是局域网,可以用socket。但是,最好不要传递DataSet,应该自己定义一些对象。  
数据RDA同步数据不是好选择。根据实际情况应该采用数据增量同步,避免多余的数据同步。毕竟mobile的资源是有限的。 
 

请教楼上的的什么是“数据增量同步,避免多余的数据同步”?谢谢!


这个比较复杂:
不过大概的思路是:
服务端和Mobile端的数据库的表要增加一个字段,用来对数据的修改(增,删,更新)。
数据同步的功能应该放在webservice,同时要在服务端增加一些触发器和跟踪表和存储过程。
在跟踪表中主要是用来存储变化的,其中同步时间,同步设备ID可以作为一些特定的判断和标志。
需要注意的是应该保证Mobile端的时间和服务段的时间是一致的。

#15


我也用webservice方式,很好用感觉

#16


http://msdn.microsoft.com/zh-cn/library/bb902827.aspx

http://msdn.microsoft.com/zh-cn/library/ms172917(SQL.90).aspx


http://msdn.microsoft.com/zh-cn/library/ms151847.aspx


业务不复杂的话,参看上面的链接

#17


业务复杂的话,直接推荐使用WebService

#18


RDA方法

' Connection String to the SQL Server
'
Dim rdaOleDbConnectString As String = "Data Source=MySqlServer;Initial Catalog=AdventureWorks; " & _
    "User Id=username;Password = <password>"

' Initialize RDA Object
'
Dim rda As SqlCeRemoteDataAccess = Nothing

Try
    ' Try the Push Operation
    '
    rda = New SqlCeRemoteDataAccess( _
        "http://www.adventure-works.com/sqlmobile/sqlcesa30.dll", _
        "Data Source=MyDatabase.sdf")

    rda.InternetLogin = "MyLogin"
    rda.InternetPassword = "<password>"

    rda.Push("MyLocalTable", rdaOleDbConnectString, RdaBatchOption.BatchingOn)

    ' or, try this overload:
    '
    ' rda.Push("MyLocalTable", rdaOleDbConnectString)

Catch
    ' Handle errors here
    '
Finally
    ' Dispose of the RDA Object
    '
    rda.Dispose()
End Try

#19


引用 14 楼 fumingxia19 的回复:
用webservice在搞,

webservice和一般的http get那个更高效?

#1


防火墙关掉
打SP1或SP2补丁
换个windows 2000试试
用PC端测试下是否能连接你的数据库服务器

#2


     string strConn="Server=192.168.1.102;DataBase=pdadb;User ID=sa;Password=sa;Persist Security Info=True;";

这是sql2000的联接串

#3


//连接字符串 
              string CONN_STRING_REMOTE = "database=XiaoTest1;server=192.168.0.31 ;Trusted_connection=false;user id=sa;password=;"; 



连接字符串有问题,一看就知道这个字串是联不上SQL2005的。SQL2005要在IP后加上SQL服务名

#4


有点难度哦

#5


点菜系统我也在做,我是采用SQLCE连接PC数据库,然后采用RDA方式与数据库进行数据同步的。

#6


可以用直联的方式呀,反正移动区域小的

#7


我也是最近学,当时赶时间,没有自己去细学,很汗……我当时通过VS2005里集成的添加数据源的向导添加到SQL Server 2005的连接。添加后会自动生成的Data Adapter,很好用。

#8


用webservice在搞,如果是局域网,可以用socket。但是,最好不要传递DataSet,应该自己定义一些对象。
数据RDA同步数据不是好选择。根据实际情况应该采用数据增量同步,避免多余的数据同步。毕竟mobile的资源是有限的。

#9


引用 8 楼 fumingxia19 的回复:
用webservice在搞,如果是局域网,可以用socket。但是,最好不要传递DataSet,应该自己定义一些对象。 
数据RDA同步数据不是好选择。根据实际情况应该采用数据增量同步,避免多余的数据同步。毕竟mobile的资源是有限的。


请教楼上的的什么是“数据增量同步,避免多余的数据同步”?谢谢!

#10


哪只能自己对已上传数据打上标记,下次同步的时候就只传未打标志的数据

#11


不建议楼主通过PDA直连sqlserver 建议通过webservice建立中间层!
这样在网络情况相同的情况下 不会影响速度!

#12


LZ
不要这样连接,你最好把业务处理的逻辑搞到WEBSERVICES里,然后手机调用.我一直都是这么做的

#13


直接联的方式用的速度也快的

#14


引用 9 楼 plazuopeng 的回复:
引用 8 楼 fumingxia19 的回复:
用webservice在搞,如果是局域网,可以用socket。但是,最好不要传递DataSet,应该自己定义一些对象。  
数据RDA同步数据不是好选择。根据实际情况应该采用数据增量同步,避免多余的数据同步。毕竟mobile的资源是有限的。 
 

请教楼上的的什么是“数据增量同步,避免多余的数据同步”?谢谢!


这个比较复杂:
不过大概的思路是:
服务端和Mobile端的数据库的表要增加一个字段,用来对数据的修改(增,删,更新)。
数据同步的功能应该放在webservice,同时要在服务端增加一些触发器和跟踪表和存储过程。
在跟踪表中主要是用来存储变化的,其中同步时间,同步设备ID可以作为一些特定的判断和标志。
需要注意的是应该保证Mobile端的时间和服务段的时间是一致的。

#15


我也用webservice方式,很好用感觉

#16


http://msdn.microsoft.com/zh-cn/library/bb902827.aspx

http://msdn.microsoft.com/zh-cn/library/ms172917(SQL.90).aspx


http://msdn.microsoft.com/zh-cn/library/ms151847.aspx


业务不复杂的话,参看上面的链接

#17


业务复杂的话,直接推荐使用WebService

#18


RDA方法

' Connection String to the SQL Server
'
Dim rdaOleDbConnectString As String = "Data Source=MySqlServer;Initial Catalog=AdventureWorks; " & _
    "User Id=username;Password = <password>"

' Initialize RDA Object
'
Dim rda As SqlCeRemoteDataAccess = Nothing

Try
    ' Try the Push Operation
    '
    rda = New SqlCeRemoteDataAccess( _
        "http://www.adventure-works.com/sqlmobile/sqlcesa30.dll", _
        "Data Source=MyDatabase.sdf")

    rda.InternetLogin = "MyLogin"
    rda.InternetPassword = "<password>"

    rda.Push("MyLocalTable", rdaOleDbConnectString, RdaBatchOption.BatchingOn)

    ' or, try this overload:
    '
    ' rda.Push("MyLocalTable", rdaOleDbConnectString)

Catch
    ' Handle errors here
    '
Finally
    ' Dispose of the RDA Object
    '
    rda.Dispose()
End Try

#19


引用 14 楼 fumingxia19 的回复:
用webservice在搞,

webservice和一般的http get那个更高效?

#20