最近开发一个餐饮点菜的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端测试下是否能连接你的数据库服务器
打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的联接串
这是sql2000的联接串
#3
//连接字符串
string CONN_STRING_REMOTE = "database=XiaoTest1;server=192.168.0.31 ;Trusted_connection=false;user id=sa;password=;";
连接字符串有问题,一看就知道这个字串是联不上SQL2005的。SQL2005要在IP后加上SQL服务名
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的资源是有限的。
数据RDA同步数据不是好选择。根据实际情况应该采用数据增量同步,避免多余的数据同步。毕竟mobile的资源是有限的。
#9
请教楼上的的什么是“数据增量同步,避免多余的数据同步”?谢谢!
#10
哪只能自己对已上传数据打上标记,下次同步的时候就只传未打标志的数据
#11
不建议楼主通过PDA直连sqlserver 建议通过webservice建立中间层!
这样在网络情况相同的情况下 不会影响速度!
这样在网络情况相同的情况下 不会影响速度!
#12
LZ
不要这样连接,你最好把业务处理的逻辑搞到WEBSERVICES里,然后手机调用.我一直都是这么做的
不要这样连接,你最好把业务处理的逻辑搞到WEBSERVICES里,然后手机调用.我一直都是这么做的
#13
直接联的方式用的速度也快的
#14
这个比较复杂:
不过大概的思路是:
服务端和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
业务不复杂的话,参看上面的链接
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
' 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
webservice和一般的http get那个更高效?
#20
#1
防火墙关掉
打SP1或SP2补丁
换个windows 2000试试
用PC端测试下是否能连接你的数据库服务器
打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的联接串
这是sql2000的联接串
#3
//连接字符串
string CONN_STRING_REMOTE = "database=XiaoTest1;server=192.168.0.31 ;Trusted_connection=false;user id=sa;password=;";
连接字符串有问题,一看就知道这个字串是联不上SQL2005的。SQL2005要在IP后加上SQL服务名
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的资源是有限的。
数据RDA同步数据不是好选择。根据实际情况应该采用数据增量同步,避免多余的数据同步。毕竟mobile的资源是有限的。
#9
请教楼上的的什么是“数据增量同步,避免多余的数据同步”?谢谢!
#10
哪只能自己对已上传数据打上标记,下次同步的时候就只传未打标志的数据
#11
不建议楼主通过PDA直连sqlserver 建议通过webservice建立中间层!
这样在网络情况相同的情况下 不会影响速度!
这样在网络情况相同的情况下 不会影响速度!
#12
LZ
不要这样连接,你最好把业务处理的逻辑搞到WEBSERVICES里,然后手机调用.我一直都是这么做的
不要这样连接,你最好把业务处理的逻辑搞到WEBSERVICES里,然后手机调用.我一直都是这么做的
#13
直接联的方式用的速度也快的
#14
这个比较复杂:
不过大概的思路是:
服务端和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
业务不复杂的话,参看上面的链接
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
' 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
webservice和一般的http get那个更高效?