小弟最近在学习用DELPHI编写C/S的程序,有这样二个就只是问题
  1。我是用MODEM远程拨号到服务器,请问客户端应该怎样连接SQL SERVER数据库(前台是用的DABASE)。
  2。我想把Dbase中的一个表的数据传到SQL SERVER的一个表里,请问怎么样做,还有就是用什么事务来控制,因为不得不考虑有可能在传送中网络断开,硬件出错啊什么的。

解决方案 »

  1.   

    好好看看类似的书吧,
    服务端建远程数据窗口,用ADOConnection 连接SQL SERVER数据库;ADOQuery1连接指定表,
    DataSetProvider传到客户端。客户端用DCOMConnection ,ClientDataSet 连接服务端的刚才建的数据源,在客户端可以不用dbase 直接存到临时文件,然后上传到数据库。事务来控制
    procedure TfrmData.tabDocBeforePost(DataSet: TDataSet);
    begin
      adoWDGL.BeginTrans;
    end;procedure TfrmData.tabDocAfterPost(DataSet: TDataSet);
    begin
      adoWDGL.CommitTrans;
    end;procedure TfrmData.tabDocPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    begin
      adoWDGL.RollbackTrans;
      Action :=daAbort;
    end;
      

  2.   

    我想把Dbase中的一个表的数据传到SQL SERVER的一个表里,请问怎么样做,还有就是用什么事务来控制,因为不得不考虑有可能在传送中网络断开,硬件出错啊什么的。把操作加入到事务处理之中,这在数据库相关程序中是非常重要的
      

  3.   

    第一,如果用modem的话,首先要配置好你的服务器的一些项目。这样客户机和服务器拨号成功后,就同属于一个局域网了,可以在查找计算机里查找到你的服务器机器。
    用ado或者其他都可以,用IP或者机器名都能实现。
    对于用Modem传输数据,其事数据结构设计的严谨的话,不要用事务来控制。比如传10000条记录,结果在900条的时候出错了,全部roolback了,你认为合适吗?白费了。
      

  4.   

    第一,如果用modem的话,首先要配置好你的服务器的一些项目。这样客户机和服务器拨号成功后,就同属于一个局域网了,可以在查找计算机里查找到你的服务器机器。
    用ado或者其他都可以,用IP或者机器名都能实现。
    对于用Modem传输数据,其事数据结构设计的严谨的话,不要用事务来控制。比如传10000条记录,结果在900条的时候出错了,全部roolback了,你认为合适吗?白费了。
      

  5.   

    第一,如果用modem的话,首先要配置好你的服务器的一些项目。这样客户机和服务器拨号成功后,就同属于一个局域网了,可以在查找计算机里查找到你的服务器机器。
    用ado或者其他都可以,用IP或者机器名都能实现。
    对于用Modem传输数据,其事数据结构设计的严谨的话,不要用事务来控制。比如传10000条记录,结果在900条的时候出错了,全部roolback了,你认为合适吗?白费了。
      

  6.   

    你可以很通过服务器端的IP连接到服务器,SQL Server,可能需要将数据库客户协议设置为TCP/IP,关于双commit的问题,可能需要使用一些特殊的机制来保证了,如果不采用特殊的机制,则要保证两个事务都必须被完成,如果一个失败那么两个都是失败的.所兴COM+提供的two commit机制来保证事务的提交,前提你客户端必须安装MS DTC 来保证双事务.我感觉自己来处理这些事务也不是特别的复杂.还有一种方法就是传递,客户端数据的差量文件,这样比较经济而且速度较快,但是事务性不好一般用在模拟消息服务的系统,即客户端收集资料,而不知道资料将被如何处理,而且可以断开网络:)