SqlHelper里面的方法全部用Static有什麼好處及缺點???

解决方案 »

  1.   

    好处 非常 面向 不用重新new一个对象
    new新的对象是一个比较消耗系统资源的事情使用static方法可以 很好的节约 系统开销
    调用速度快
    但是 会增加 内存开销 因为它是驻留在内存中的
      

  2.   

    同上,但是为什么不使用singleton模式呢?
      

  3.   

    我的理解: 
        由于程序必须以类的形式出现,因此,需要定义为类;    这些函数比较相关,因此都放在SQLHelper中,而另一方面,又不需要保存临时状态,或中间状态。 或者,另一方面,这些函数所需要保存的状态完全不同,不便于使用对象中存储的状态来实现。于是,如果需要,就把这些作为参数,一次传递。    至于系统资源消耗,内存占用等,我认为不是主要原因。因为,要实现预定的功能集合,这些代码必定都要实现的。
      

  4.   

    to zhxfzhxf1(zhxfzhxf1) :你说的这些用singleton模式也可以实现啊
      

  5.   

    SqlHelper
    实现数据库有关的数据的自动释放
    而不用用户自己去 实现
    这就是好处,
      

  6.   

    SqlHelper
    实现数据库有关的数据对象的自动释放
    而不用用户自己去 实现
    这就是好处,
      

  7.   

    有道理,全部定义成static,定义起来简单,使用起来也简单,负面影响那样了,MS的一贯作风
      

  8.   

    怎麼都沒有相應的錯誤處理的...
    public static DataSet ExecuteDataset(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
    這里用的事務怎麼都不用提交(Commit)之類的,如果出錯它又怎麼處理,能自動(Rollback)
      

  9.   

    等....
    在SqlHelper中的SqlTransaction怎麼用的?
      

  10.   

    非常赞成 hertcloud 的说法
      

  11.   

    C#和VC最大的改进就是有大量的静态类可以使用,从命名空间一路下来,不用翻类库就可以写出大部分的代码,
    长期在MFC里寻找合适类的朋友可能对此会深有体会!
      

  12.   

    SQL Helper本来就写得狠烂。不用singleton模式很简单,因为他没有任何需要保存的环境信息,没有Session和Transaction机制。问题有问题,为什么用静态,他们来没有实例成员他不用静态方法难道用实例方法啊?那不是吃饱了撑了?至于为什么没有实例成员是因为他本身就不需要,因为他又没Session又没Transaction机制的,也没有多态,唯一的一个参数缓存又是可以全局共享的,所以根本没必要。
      

  13.   

    静态函数优点使用方便,开销小,特别适合 不需要要使用实列变量的、没什么线程冲突的 通用函数
    SqlHelper 里的所有函数都是这类
    pshy(无心) ( ) 信誉:100  2006-7-12 11:56:24  得分: 0   
       
    怎麼都沒有相應的錯誤處理的...
    public static DataSet ExecuteDataset(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
    這里用的事務怎麼都不用提交(Commit)之類的,如果出錯它又怎麼處理,能自動(Rollback)错误处理怎么能放在这个地方那,明显应该放在 调用方。
    错误处理也不应该到处写的。
    -- 一般就用在最外层调用方
    -- 或数据库事务的起始方
      

  14.   

    还有 SqlHelper 是个demo 类
    需要自己改造一下的....
      

  15.   

    弱弱的问一句SqlHelper是个什么?是petshop里面的那个么?
      

  16.   

    sqlhelper 是有漏洞的 .text的blog用这个,在高并发的时候.....惨目忍睹
      

  17.   

    我觉得SQL Helper只是实现了最基本的功能,简单实用,如果想针对某些业务做更好的应用,比如singleton,需要自己再封装一下,毕竟SQL Helper是为了适应大多数的应用.所以没用singleton(猜测)
    另外,至于错误处理的确是有问题再说了Enterprise Libary里面不也是用起来很不爽么.
      

  18.   

    那是由于sqlhelper的作用决定使用静态方法更适合。纯粹是脱离业务的数据层操作。
      

  19.   

    謝謝各位!
    to: 
    Ivony() ( ) 因为他又没Session又没Transaction机制的,
    請問SqlHelper里面不是有用Transaction的嗎?to:
    FlashElf(銘龘鶽) ( ) 
    -- 或数据库事务的起始方
    請問是在Transaction.Commit()處嗎?
      

  20.   

    他没有Transaction的机制,看看别的数据访问层就知道那是什么了。
      

  21.   

    to:Ivony() 
    别的数据访问层請問可以提供一點來看下嗎?謝謝!
    [email protected]
      

  22.   

    简单就是美,数据底层还是要自己写得,不是没有Transaction,是你没用
    是不是数据访问底层也省略了,人家可不是这么准备的
      

  23.   

    我的理解,也许很肤浅
    static的方法只因有static的资源或者数据存在而使用
    而static的资源和数据只因对象需要共享或者减少单个实列的浪费(有时候大家使用同一个数据足以,还可以保持同步)而存在
      

  24.   

    sqlhelper可以了,只是没有基于更上一层应用的封装.
    由自己建立事务环境来使用也并不是这么差径,就算封装好的组件也必须new一个Session.显式打开和提交其实差别也不这么大.
    唯一不好的地方就是方法基于线程安全,什么Connection,Transaction都要传进去.
    没有对象操作起来方便灵活.
      

  25.   

    .NET下的数据访问有很多很多模型,Google一搜一大把,例如我写的:http://topic.csdn.net/T/20060228/13/4583043.html