三层中如何上传与下载数据(200分)

小天

Unregistered / Unconfirmed
GUEST, unregistred user!
思路是这样的:客户端程序启动时采用SocketConnect方式与服务器连接,要
求把服务器上Sql Server 7.0数据库内容下载到客户端上的Paradox 5.0数据
库中(表结构一致),然后断开连接。在客户端程序关闭前,要求再把客户端
数据库中的内容再上传到服务器。请问这种方法是如何实现的呢?
本人做三层是个菜鸟,还请各位前辈多多指教
 
用TClientDataSet。Savetofile同样实现本地数据库,为什么用Paradox??
 
你的要求不正是标准的"公文包"模式吗?这种例程在每本
讲MIDAS的书里都有的。
  你用一ClientDataSet,在服务器上放一个“应用服务器”,
如果想简单一点其实可以直接用ClientDataSet去连接一个SQL
数据库(通过把一个Query或Table的数据给它)。调用
ClientDataSet.Savetofile。然后就可以断开了这佯,
就可以在本地操作数据了。
提交的时候跟一般的Tabel差不多,delphi中有个例子的。实顼你的
要求应该还是比较简单的.
 
下到paradox?为什么呀?
你没看我的例子吗?可以直接保存到CDS文件的。而且不用BDE,不省力吗?
我给你的东西里有如何保存到本地和更新的;
保存:
clientdataset.savetofile('localfile.cds');
读:
clientdataset.loadfromfile('localfile.cds');
更新
clientdataset.applyupdates(-1);
 
To 各位:
我也想过用公文包的方式的呀,可是我对公文包式的文件总有点儿概念不清。
我有好多好多的QUERY和TABLE,它们的DATABASE怎么指呢?怎么写SQL语句呢?
也能fieldbyname吗?这些公文包文件也能做得到吗?
 
呵呵,既然用了MIDAS还用TABLE/QUERY?该用TCLIENTDATASET呀
它也有FIENDBYNAME方法的,几乎和TABLE一样。D5对它还有了扩展
我记得上次不给过你一篇CLIENTDATASET的文章吗?没看?
另:什么时候再请我吃饭呀?:)
 
一个Remote Connection就是相当于DataBase啊!
 
其实问题好麻烦的,我们公司要求做一个全能的系统,它分好几种情况,如:
1、本地记帐,即用三层做,也就是我想要用上传和下载功能的地方
2、即时过帐,其实也就是常用的C/S结构,client和server要联机做的
所以我想用table及query来做,只是database的指向不同而已
请问各位大侠我该如何把两者合在一起做呢?
to CJ:你上次给我文章里好象没有讲到clientdataset吧,我看得好仔细的
对了,你怎么又要骗饭饭吃了?呜~~~~~~~~~~
来珠海吧,我再请你~~~~~~~~~

 
我靠, 如果要把数据库传来传去, 海量数据更新~~
如果要效率高, 最好把更新的数据单独存放在一个数据库中, 只提交这个数据库就
可以了.
 
to cytown:
怎样才能提交一个数据库呢?
to CJ:
sorry啊,我看错这儿的标题了,看错这儿的“ClientDataSet”了以为是一个
其他东东呢。其实你不要冤枉我呀,你给我的文章,我真的看了又看了,还做了笔记
呢,真的,不骗你。

 
CJ 一头撞在墙上——晕倒,过了半天,台起头来,可怜西西的问小天:
是那篇《用DELPHI写瘦数据库程序》看了没有呀?
更新改动的部分?删除怎么办?还是用MIDAS吧!
不会真的要传整个数据库吧?——再晕
 
不明白,你添完记录以后马上提交不就是即时的吗?
 
1. 建立临时库 tmpdb.db
2. 把所有更改过的库存在 tmpdb.db中
3. 遍历tmpdb.db提交到remoteserver中.
 
to:cytown
>>3. 遍历tmpdb.db提交到remoteserver中.
是怎么做的呢?小天笨笨,能不能详细点呢?


 
to CJ:
呀,那篇呀。嘻嘻,不好意思我忘在上海了以前看过,现在记不太清了,
能不能再MAIL一次过来呢?嘻嘻,不好意思。
 
table1.open
while not table1.eof
begin
sql:='update remotedb set a='''+table1.fieldbyname('a').asstring+''' where id='+table1.fieldbyname('id').asstring
t:=ClientDataSet1.Provider.DataRequest(sql);
table1.next;
end;
 
to cytown:
你先别晕,千万别学CJ。
>> t:=ClientDataSet1.Provider.DataRequest(sql);
里的sql写什么呀
别晕别晕,原谅小天笨笨嘛
 
sql:='update remotedb set a='''+table1.fieldbyname('a').asstring+''' where id='+table1.fieldbyname('id').asstring;
当然是你用来更新的语句了:)
 
那么TClientDataSet与TTable间怎么复制数据呢?
BatchMove好象不行也
 
多人接受答案了。
 
顶部