一个C/S项目,需要在广域网使用,用到了sqlserver数据库.
现在的问题是,客户端如何操作数据库?
(不要告诉我客户端直接用ado连接数据库.那样密码在客户端暴露不安全.我也不想用webservice连接.)听说可以用socket连接.写一个服务器程序.但我不知道如何用socket传递数据库的表给客户端,愿高手给个思路.

解决方案 »

  1.   

    1、建立和表相关的实例类,用来封装要发送的包的content
    2、约定消息类型type,指定对数据库做什么操作
    操作:
    client发送udp包到server udp接收端,Server收到包之后取出type,content,然后根据type
    对数据库做增删改查的操作
      

  2.   

    在server和client启动的时候都要建立udp端,server的udp 端ip和port需要约定好。
    然后client访问约定好的ip和port发包,也可以同时把client临时的udp端ip和port一起发送,便于server返回数据到cleint。
    要解决的问题就是udp每包的上限大小是8k,你需要多次回发
      

  3.   

    把所有客户端要做访问数据库的操作写成命令字符串。用socket传给服务器。然后服务器根据不同的命令对数据库进行不同的操作。如果要返回数据你可以把那个接收数据库表的datatable对象序列化成流,然后发给客户端,客户端再反序列化就获得datatable对象了
      

  4.   

    我以前做过类似的,服务器是一个linux的,客户端通过socket或者ftp传过去,在服务器上有一个脚本程序,当客户端把数据传过去后调用这个脚本程序,就执行入库操作;
    感觉有点麻烦
      

  5.   

    谢谢yamakasi4050,wangyue4, 感觉wangyue4的方法很不错,特别是可以省去很多步骤.
    还有其它的方法吗?(不使用socket的方法也可以)
      

  6.   

    这个东西,我是做过的。
    不是很难。
    使用socket实现数据传输和WebService还不是一样吗?
    你写的socket程序也要做成Windows服务,也要放在服务器上。
    无非就是速度比WebService稍微快一点而已。
    光在稳定性上你就要下很大的功夫。
    基本思路是:
    使用Socket通讯,
    在把你需要连接的数据库信息或SQL语句加密传送到服务器端。
    服务器端的程序负责解析接收的数据,然后连接数据库,
    执行相应的SQL语句,把执行的结果,以流的形式(byte数组),返回就行了。
    如果是多客户端并发的话,在服务端的需要多线程处理,
    功力不够,做不好的话,会经常造成出错,程序异常退出,
    最好加上守护进程处理。
      

  7.   


    看来,WebService是首选的方式了吧?我是用来最财务方面的应用的.