求救数据传输方法!(100分)

  • 主题发起人 主题发起人 gang18
  • 开始时间 开始时间
G

gang18

Unregistered / Unconfirmed
GUEST, unregistred user!
各位,大家好!
在三层结构中,客户端跟服务器端的数据传递应该怎么办才好,也就是说,客户端应该
怎么样从服务器端现在数据和上传数据,用什么方法好,客户端用access数据库,服务
器端用sql server数据库。
谢谢大家!
 
能说的更明白吗?
 
[:(]
代码:
我现在也有碰到这种类似的问题,不过我是数据精度跟我在传输数据的时候老是丢数据
的问题:(一直没有很好的解决办法,哪位大师能给个办法~?谢谢!
 
最好是用sql server的出版操作
客户端与服务器端全采用sqlserver
 
就是把客户端的数据库中的数据传输到服务器端的数据库中,我现在用的是对应的字段
直接赋值,就是
(服务器端) (客户端)
table.fieldbyname('aaa').asstring:=query.fieldbyname('aaa').asstring
所以,想请问各位,应该怎么做,是不是还有其他的办法呢?
谢谢!
 
你的客户端为什么需要一个本地数据库?
和服务器不在一个局域网内?
 
你这不成了C/S结构了,不是三层结构吗,能说的详细点吗。
 
使用midas技术
SOCKET、DCOM...方式可解决
 
先谢谢各位了!
是三层的,不在同一个局域网内,我只是举个例子,说明是赋值的那种方式。
我是问应该怎么传输数据,我原来已经做好了,不过是用赋值的方式,我想问问还有没有
其他具体的方法!
我原来是这样做的,客户端库中a表中的数据要想传到服务器端b表中,我原来用的是对应字
段赋值的方法,请问其他更好的方法,谢谢!
 
你把客户端也换成 SQL server 数据库,然后用 insert 语句实现会更好一些。
 
在应用层用TScoketConnection 连接,用TClientdataSet 连接到SQLSERVER数据库,
客户端可用TADOQUERY取出数据,用TCLientdatasetec通过应用层导入到SQLSERVER数据库。
建议不用table,还是用query控件好,方便,灵活。说了这么多,还是不清楚你到底在问
什么,只好供参考了,呵呵。。。
 
用ADO连接数据库和本地数据库,都是MS的东西.
做成三层或二层都行,
 
IT书生:
你好!
你说的“用TCLientdatasetec通过应用层导入到SQLSERVER数据库”是什么意思呀,
应该怎么做呀?
能具体点吗?!
谢谢!
 
(1)应用层:新建file/new/Multitier/Remote Data Module 拉一个
datasetprovider 控件与一个Adoquery1控件,adoquery1在connectionstring里连
接sqlserver数据库。datasetprovider1的dataset指定adoquery1 运行程序,记
得打开scktsrvr.exe 
(2)在客户端:用控件TScoketConnection 连接,address指定为:应用层服务器
的ip,控件ClientdataSet1 在remoteServer里连接scoketconnection1,
providername连接datasetprovider1
(3)
用ADO连接你的ACCESS数据库,取出数据。用下面方法导入。
ClientdataSet1.Close;
ClientdataSet1.CommandText:='insert into user.....';
ClientdataSet1.execute;
 
IT书生:
你好!
非常的感谢,我就是需要你的第三条,我试试,非常的感谢!
 
IT书生:
你好!
我还有点不明白!
请问你这是下载还是上传,就是access到sqlserver还是sqlver到access,其实我这两方面
都需要,不过我现在还不理解你的意思,你说的insert into user....是什么里面的内容插
入到什么地方那,还是请你指教,谢谢!
 
insert into 目的表
select * from 源表

 
楼上的兄弟,你好!
谢谢你的回答,不过请问:
insert into 目的表
select * from 源表
目的表 是远程的表,
源表 是本地表,不会就直接写数据库中表的名字吧?
既不在一个库中,有不在一起,一个远程,一个本地,怎么指定是那个数据库呀?
 
你通过应用层连接SQLSERVER,在应用层指定数据库。
ClientdataSet1.Close;
ClientdataSet1.CommandText:='insert into user.....';
ClientdataSet1.execute;
以上是指,你用ADO,或随便那种方法,把ACCESS记录选出来,因为cilentdataset1通过
datasetprovider 控件已经连接到->ADOquery1->SQLSERVER数据库,按以上方法是把
ACCESS数据库的记录导入到SQLSERVER数据库中。
如要下载,只须
ClientdataSet1.Close;
ClientdataSet1.CommandText:='select * from sqlserver数据库中的表.....';
ClientdataSet1.open;
for i:=0 to ClientdataSet1.recordcount-1do
begin
tmp:=ClientdataSet1.fields[0].asstring;
............//再把数据导入到ACCESS数据库。
end;
无论下载还是上传,都可以实现,再试试。
 
非常的感谢各位的帮助,不过,可能是我没有说明白吧,大家好象都误会我的意思了,我不
是说应该怎么样做三层结构的程序,我是想,怎么样把本地没有上传的数据上传到服务器,
和把没有从服务器下载的数据进行下载到本地库中,我原来用的是这种方式:
ClientdataSet1.fields[0].asstring:=query1.fieldbyname[0].asstring;
如果用ClientdataSet1.CommandText,那么后面的语句不是还有好多变量吗,因为我要传输
的数据中,每个表的字段都比较的多,insert into 表 values(:a1,:a2,:a3),这样其不是
跟我原来的那种方法差不多呀,我是想问,有没有一种办法,可以一次把好多条记录插入到
远程服务器数据库中,具体应该怎么做!
先谢了!
 
后退
顶部