三层中,如何把客户端更改了的数据更新回数据库。
我是把客户端的ADOQuery1.Recordset或ADODataSet1.Recordset作为参数传回给服务器的。
请问在服务器端更新的代码如何写?
我是把客户端的ADOQuery1.Recordset或ADODataSet1.Recordset作为参数传回给服务器的。
请问在服务器端更新的代码如何写?
解决方案 »
- 在上海或者南京找delphi的工作 工资要多少呀?
- delphi中怎么判断excel选择的区域大小
- 面向对象到底是什么?
- 请教:那位高手帮忙,解答打印查询结果的程序,用quickreport。谢谢!
- 哪位帮我看看这个控件释放问题
- 如何实现流的分解和追加,都来看看,探讨一下!问题解决了就再加分
- 初学,请问LoadFromfile运行的条件是什么?
- 急!急!急! 关于数据库安全问题,特别是对MIS软件对数据安全要求很高
- 请教interbase组件在delphi7.0的用法(急!急!急!)
- 关于TStrings的问题
- float 在delphi下 是什么类型???! 再线等
- 十万火急:如何确定一个对象是否存在
我是把改变的数据,用数组传递的,然后在中间层生成sql语句来处理,sql语句存放在数据库中。我不赞成用数据感应控件。或者你在客户端生成sql语句来传递。
如果每个结果集都要自己生成数组传递,而且更新时还自己生成SQL,太麻烦。
说了,你可别生气
你这样做还叫三层数据库结构呀
三层:
应用服务器:ADOConnection1+adoquery+DataSetProvider1(简单),
另外你可以写一些方法等(启动ScktSrvr)
客户端: SocketConnection1或DCOMConnection1连接等,
+ClientDataSet1(写sql语句或传递参数)
等。
在我看来,以recordset作为参数传递和使用clientdataset1的delta包传递参数其实是类似的。其实我的recordset是由服务器产生,并传到客户端,当数据更改后,再传回服务器更新,对批量数据修改很方便。用recordset作为参数传递,可以使用recordset自己产生SQL语句,比TDataSetProvider方便(TDataSetProvider可能需要在beforeupdaterecord事件中写代码)。当然,比自己去组装SQL也方便的多。至于你说的ClientDataSet1(写sql语句或传递参数),那就是说SQL是由客户端发出的,那当SQL需要改变时,更新所有的客户端?当然,你可以说动态生成SQL,那是另一个话题了。delphi的MDIAS不是真正的N-tier结构,这个是不需要讨论的。
我的问题已经解决了,谢谢你和soaringsouth(栈桥捉鳖)的参与。给分。呵呵。