我写的winform程序,启动就连接上数据库,一直不断开,这样好吗? 还是像WEB一样 用一次连一次好?

解决方案 »

  1.   

    con.Open();用完就con.Close();
    开着浪费资源
      

  2.   

    不用的地方要关闭
    否则一是浪费资源
    二是有的数据库比如oracle会有最大连接的限制,若你的连接一直都不关闭,每次都建立一个新的连接的话,多次使用的话可能会超过oracle的这个最大连接的限制,使得连接的时候报错
      

  3.   

    如果你有要即时刷新数据的需求就要一直连接在关闭程序的时候close就可以了如果没必要的话就用完就关,要用再开
      

  4.   

    一个con.Close();关闭
    一个conn.Dispose();释放
      

  5.   

    这个主要看你的应用程序和应用环境了。
    我写的一个winform程序,c/s结构,基于Oracle数据库,最大同时在线用户可能100个。
    因为程序运行的时候,会多次和数据库进行数据交换,所以每个客户端必须一直连接数据库,如果执行一个sql就打开关闭一次数据连接,客户会感到相应速度非常慢,尤其是显示主从表的时候。
    所以,我建议你如果客户端程序和数据库之间访问频繁,最好一直保持连接,现在的大型数据库(Oracle、DB2)同时保持几百个连接没有任何问题。
      

  6.   

    using (sqlconnection){con.open();}用完就自动释放了。
      

  7.   

    WINFORM两层C/S架构的程序,如果经常要和数据库交互的话,绝对应该保持连接.
    理由是:
    1.ADO.NET其实自动帮你开启了连接池,所以就算是用完关闭,其实和SQL服务器的连接还连着,只不过由连接池来管理,如果在指定时间内你又需要开连接,它会把刚才那个取出来给你继续用;所以用完即关在这种环境下无助于减少服务器的同时连接数;
    2.新的连接需要和服务器通信验证等等,就算是连接池取过来的已经连接上的连接,用之前,也会自动执行一下RESET CONNECTION,这对性能产生了影响.另外:
    在采用这种保持直连的模式下,如果用到强类型的DataSet,会比较别扭,因为自动生成的强类型TableAdapter,是不知道你有一个现成的连接的,所以它创建的时候会按配置里面的连接串来建立一个新的连接来使用.(这就要用其他的一些办法来达到统一)我的意见是只有在写中间层或者是APS.NET的时候才采取用完即关闭的方式.
    好多人在遇到这个问题的时候,很自然就照搬书上说的,ADO.NET的连接应该在需要时才连,用完即关闭,这样及时释放资源,增加了吞吐性能.
    其实这种说法要看应用的环境,如果在实现中间层的代码中,由于这层的任务就是为前端的客户层查询需要的数据,
    其实我很怀疑这样回答的人到底有没有真正做过WinForm的项目.就算你Close了连接,ADO.NET还是