有时看到别人用存储过程 + 及触发器的非数据挷定来完成数据更新.
在DELPHI中使用这种更新机制实际吗?
这种方式比用数据挷定工作量大了很多,并且效果与挷定有什么不同我也不清楚.用ADO挷定对空值有点BUG的.

解决方案 »

  1.   

    是的,一般情况采用存储过程来做,这样能够减少数据流量。
    但数据更新,也可以采用数据控件绑定更新,这种方法是简单,直观,不用写代码。但如果数据量比较大,采用这种方式时时与服务器建立链接,对数据流量有影响。
    采用SQL代码更新可以,但要注意,如果当更新数据时,服务器忙,有可能造成更新数据丢失的现象。
      

  2.   

    前者效率要高后者~dataset~sql~~效率低些工作量倒不会大很多,对谁而言了~~delphi程序员些 trigger 当然觉得很烦~~~sql程序员呢~觉得这样才放心~~~
      

  3.   

    一般的客户端(C/S结构或三层中)采用SQL代码或储存过程进行增删修有意义吗?
    当采用SQL代码时,数据刷新比挷定更新耗网络资源吧?
      

  4.   

    采用SQL代码形式,具体是如何实现?
    是否在中应用服务器中增加一一对应每个表的更新方法,然后在把EDITBOX等控件的值以参数形式传到方法进行更新?
    但是对于子表,它的数据是以表格形式让用户输入的,该如何更新呢?李维的<DELPHI 5.X 分布式系统篇>里讲了TClientDataSet对能数据流量很控制,对数据更新后的刷新都进行了最大程度的数据量优化.
    如果采用SQL代码形式,要如何控制才能作到与TClientDataSet相同的功能.
      

  5.   

    为什么要用三层结构或中间件技术呢?
    我近来也一直在思索这个问题。
    到底是用存储过程还是在中间件里编写业务逻辑规则来实现所需的功能呢!
        若是用存储过程和触发器来对数据进行更新修改的话,必须承认的一点是对于数据库服务器省去了编译SQL语句的过程,相对地提高了效率,但是这样做必修占用数据库服务器的资源!(比如:编写一个实现多表查询并进行大量计算的存储过程,那么查询和计算就必须占用去数据库服务器的资源)
        若是采用中间件那么像上述的多表查询并进行大量计算的代码就可以在中间层即应用程序服务器中实现,把计算好的结果再更新回数据库服务器!那好这样肯定增加了应用程序服务器与数据库服务器之间的网络流量。但如果应用程序服务器与
    数据库服务器之间的“距离”较近的话问题不是很大,反而可以利用多个应用程序服务器来减轻数据库服务器的负担同时也达到了负载均衡的功能!
    若是要进行远距离传输的话,那就要小心了,依实际把握好分寸!
        同时要注意应用程序服务器与客户端之间的服务接口要尽力做到稳定,不要轻易地改变,而且尽量只传输参数。若服务接口不定,这样会影响到客户端版本的分发与控制!
        以上是个人之见!望多提建议!!!
        QQ:15618282。