在窗体中的每个按钮的事件中对数据操作完毕,都应该关闭连接吗?[后台是sql server,用ado记录集]
比如窗体上有很多按钮,每个按钮都是对后台数据库进行操作。比如conn.execute,rs.open 等等,我想问的是应该不应该在每个操作完毕后都关闭连接呢?即conn.close,看到书上说,连接用后就要关闭。可是问题是如果本窗体存在窗体级的记录集rs,如果conn.close,则这个记录集也无效了。所以我现在只能是在窗体的unload事件中执行conn.close,也就是说在这个窗体的存活期内conn连接一直连接,不知我这样做对不对呀?[即多种操作都共享这个conn连接,一直不关,有没有这么做程序的呀?]
是不是这样做有点偷懒呀?
真正规范的程序,应该如何做呀?

解决方案 »

  1.   

    千万不要关闭
    conn 因为如果你关闭了在下次使用时,在建立一次连接,就会耗费一次资源.
    使得程序运行速度相当的慢, 你应该建立一个全局的 conn 对象, 直到程序生存期结束, 在关闭这个连接对象, 你的记录集按你的需要 根据连接 生成N多了
      

  2.   

    是啊.一般来说在窗体关闭时,才把连接关闭,如果每按一次按钮就关闭连接,这样的话,要花费不少资源啊.虽然我们有时觉察不到,到是,作为一个程序员,要做的是怎样尽量少用到资源.呵....
    一句话:CPU是给用户用的,不是给我们这些程序员用的!
      

  3.   

    我的CONN一直到程序全部退出才关闭。
      

  4.   

    整个程序用一个conn就够了  除非特殊情况
      

  5.   

    一个conn就可以~~一般来说问题不大了~~
      

  6.   

    我又查了一些资料和一些论坛,发现说法不一.
    有两种说法:
    1.整个程序只用一个连接,就象我的回贴一样.
    2.随用随连,只要操作完毕就关闭连接,好象这种说法要占上风.而且据说.net已经设计成每次操作后就自动关闭连接了.我没学过.net所以不知对不对?
    如果整个程序用一个从不关断的连接,那么以下问题如何处理:
    1.如果网络出现问题,也就会导致这个连接变为无效,程序中如何检测呀,是不是每进行操作之前都要检查一下连接是否有效呀?[我是这么做的,不知是否是正确的方法]
    2.多个记录集可能同时存在,都共享这个连接,会不会有冲突呀?
    3.为什么很多高手都认同要随用随连呢?我也觉得那样麻烦,可是据说严谨的系统都是那么做的.
    我没有经验,故只好请教大家了.
      

  7.   

    拆中的做法吧,小型的系统一直连接,如果做大型的系统时,最好加个判断,如用户在多少时间内没有操作就断开连接,SAP就是这么做的,因为连接需要占用系统资源,但一直连着的话,大系统就受不了了,因为一台服务器的连接数量是有限的,还有一种办法,做一个连接池,每次连接时从里面取出,用后归还!
      

  8.   

    拆中的做法吧,小型的系统一直连接,如果做大型的系统时,最好加个判断,如用户在多少时间内没有操作就断开连接,SAP就是这么做的,因为连接需要占用系统资源,但一直连着的话,大系统就受不了了,因为一台服务器的连接数量是有限的,还有一种办法,做一个连接池,每次连接时从里面取出,用后归还!
    ================
    谢谢,做一个连接池如何做呀?我对这方面一点不懂,请指教.
      

  9.   

    是啊.一般来说在窗体关闭时,才把连接关闭,如果每按一次按钮就关闭连接,这样的话,要花费不少资源啊.虽然我们有时觉察不到,到是,作为一个程序员,要做的是怎样尽量少用到资源.呵....
    一句话:CPU是给用户用的,不是给我们这些程序员用的!
    ===================================
    曾经听一位老师说过,建立连接的过程与select相比是微不足道的.不知这种说法对否?
    按您的说法,好象建立连接是很耗资源的呀?
    所以想问问,建立连接所耗的资源有多大呀?对系统影响大吗?
      

  10.   

    我怎么感觉一直连接才是浪费资源啊,我打开一次用完关闭,然后释放资源,怎么看楼上的好多人说一直连接才叫节约资源啊,难道你一直连接的时候没有占用cpu资源?真是搞不懂,是我理解错了还是楼上的高手们理解错了啊?就算某些程序需要一直打开,打开没问题,但是你要说你一直打开的模式不占用资源我是打死也不敢苟同的,我是一般用的时候连接,用完就释放的,就是做到set nothing的,一直连着的模式感觉会出现很多不可知的错误,我是不敢用
      

  11.   

    我怎么感觉一直连接才是浪费资源啊,我打开一次用完关闭,然后释放资源,怎么看楼上的好多人说一直连接才叫节约资源啊,难道你一直连接的时候没有占用cpu资源?真是搞不懂,是我理解错了还是楼上的高手们理解错了啊?就算某些程序需要一直打开,打开没问题,但是你要说你一直打开的模式不占用资源我是打死也不敢苟同的,我是一般用的时候连接,用完就释放的,就是做到set nothing的,一直连着的模式感觉会出现很多不可知的错误,我是不敢用
    ===================
    谢谢您关注我的问题,请问: 你说"一直连着的模式感觉会出现很多不可知的错误,我是不敢用",会出现哪些问题,能举例一二吗?
    谢谢再.
      

  12.   

    原来做过一个一直打开的东西,感觉特不稳定,一有个风吹草动就直接崩溃,所以对一直打开没什么好感,也可能是原来的代码烂的原因吧.但是总感觉在整个后台连着数据库是种很不安全的做法,个人感觉而已.最少,你必须保持网络的畅通吧,虽然说用一次打开一次也需要保持网络的畅通,但是我可以在第一时间内知道网络是否畅通,你一直打开的时候,好不容易要insert了,才发现网络断了,如果代码再烂点直接崩溃,我估计用户也要崩溃了.一个前辈曾经跟我说过,当你用到资源后一定要set nothing.不nothing,系统不知道会出什么毛病
      

  13.   

    原来做过一个一直打开的东西,感觉特不稳定,一有个风吹草动就直接崩溃,所以对一直打开没什么好感,也可能是原来的代码烂的原因吧.但是总感觉在整个后台连着数据库是种很不安全的做法,个人感觉而已.最少,你必须保持网络的畅通吧,虽然说用一次打开一次也需要保持网络的畅通,但是我可以在第一时间内知道网络是否畅通,你一直打开的时候,好不容易要insert了,才发现网络断了,如果代码再烂点直接崩溃,我估计用户也要崩溃了.一个前辈曾经跟我说过,当你用到资源后一定要set nothing.不nothing,系统不知道会出什么毛病
    ====================
    交流一下,我曾经也用过一个连接,整个程序到关闭时才关闭连接对象,但是每次操作前我都会检测一下连接状态,如果没有连接,则进行一次连接,否则就用已存在的连接。
    不知有没有与我做法相同的网友呀??