在使用Delphi开发数据库的过程中,对于数据库中基本表的操作可以有以下两种方法:
方法(一):在程序中通过数据集控件操作;
方法(二):执行相应的SQL语句达到目的。
比如说:要把A表中的字段aa的值赋给B表的字段bb。
方法(一):adotable2.filedbyname('bb').asstring:=adotable1.filedbyname('aa').asstring;可以实现。
方法(二):adoquery1.sql.text='insert into B(bb) select aa from A where …… ';执行SQL语句也可以实现。
在这里就有了一个问题,从程序设计最优化的角度来看,这两种方法那一种方法更好,能更快的完成程序?
我的个人的理解是这样的。因为所开发的程序是基于C\S结构的。既然是这样,可不可以这样认为:方法(一)是在程序中实现的,也就是C端运行的。而方法(二)是执行SQL语句实现的,应该是在S端运行的。那如果照这种理解,是不是就可以判断为使用方法(一)应该更好呢?因为,这里可以假设有多个C端而且同时访问服务器,从整个C\S体系来看,执行SQL语句实现的方法必然增加了服务器的负担,而第二中正好是相反的。因此我认为,在程序设计中应该尽可能的在程序设计中解决对数据库的操做问题,也就是采用方法(一)。
请各位给点高见~
方法(一):在程序中通过数据集控件操作;
方法(二):执行相应的SQL语句达到目的。
比如说:要把A表中的字段aa的值赋给B表的字段bb。
方法(一):adotable2.filedbyname('bb').asstring:=adotable1.filedbyname('aa').asstring;可以实现。
方法(二):adoquery1.sql.text='insert into B(bb) select aa from A where …… ';执行SQL语句也可以实现。
在这里就有了一个问题,从程序设计最优化的角度来看,这两种方法那一种方法更好,能更快的完成程序?
我的个人的理解是这样的。因为所开发的程序是基于C\S结构的。既然是这样,可不可以这样认为:方法(一)是在程序中实现的,也就是C端运行的。而方法(二)是执行SQL语句实现的,应该是在S端运行的。那如果照这种理解,是不是就可以判断为使用方法(一)应该更好呢?因为,这里可以假设有多个C端而且同时访问服务器,从整个C\S体系来看,执行SQL语句实现的方法必然增加了服务器的负担,而第二中正好是相反的。因此我认为,在程序设计中应该尽可能的在程序设计中解决对数据库的操做问题,也就是采用方法(一)。
请各位给点高见~
不过因具体情况而定了
但是除非是很复杂的SQL 要不也就能快几个时钟周期吧
但是方法一还有个优点
如果你写的字段名有错的 或许赋的值类型有匹配 他可以很明白的提示你是哪个字段错了
如过方法2上SQL写错了 不得还要自己慢慢查 如果很长 那也是很累人滴
所以偶一直是用方法1