c/s程序,是整个程序用一个连接呀,还是每次操作都连接,操作完就关闭呀,哪种是正宗的用法呀?
-------------------------
我现在的作法是,启动程序时,建立一个全局的连接对象,在不退出我的程序之前,所有操作都使用共享这个连接对象.
但是现在发现网上很多人说这种方法不好,据说连接要即用即连,用后就关断.可是又说连接是很费资源的.每次操作都连接一次,也不好,我现在有点迷茫了,如何做才是对的呀,比如一些知名的商用软件,在这一点上都是如何实现的呀,请大家指教

解决方案 »

  1.   

    用INI文件连接,我就是用这种方案的,
    我的软件:http://shareware.skycn.com/author_softlist.php?author_id=26655
      

  2.   

    要看具体业务,我自己主张的原则:尽量将操作数据库频繁的放在一起用一次OPEN或事务搞定,尽量缩短OPEN时间
    当然会有个别现象就是客户端一直在操作,那就缓存起来好了千万不要太相信网络连接,万一闪断就有可能出现锁等其它乱七八糟的问题
      

  3.   

    没有什么一定的规则,关键是看你实际需求了。
    如果绝大部分是浏览数据,那么只需要打开时读一次就可以关闭了,之后只是在需要看最新数据的时候再连接和刷新也无妨,就譬如你在看BBS,也只是加载页面的时候读了一次数据,之后你要看最新帖子的时候才需要刷新,这样对于数据库几乎没有什么压力。
    如果你这个用户主要是更新数据的,那么几乎每一分钟都会向数据库提交新的更改,那样的话,一个长期的连接会更好。
    而楼上说的则是另一个问题了,那就是在进行数据库操作的时候要尽量缩短读写的过程(这和是否长连接数据库每关系,并且两者都应该这么做)。
    比如你编辑一条记录的时候,先EDIT,然后在用户向每一个TEXT里写内容的时候改字段内容,最后再等用户按下“确定”再UPDATE,那么可以说你的程序死定了,因为你永远无法预测用户将在这一个过程中消耗多少时间,中间计算机和网络出错的几率也无法预测。好的方法就是:用户按“编辑”或者“添加”的时候程序什么也不作,只是设一个标志,用来表明用户要进行的是编辑还是添加,用户更改TEXT内容的时候最多做点数据有效性验证,比如是否超过数据库字段长度或类型检测等等,只在用户按下“确定”之后才对数据库进行操作,此时就可以看前面的那个标记了,是编辑的就编辑,是添加的就添加,一个TEXT一个字段往里写,最后一个UPDATE,整个过程才零点零几秒都不到,要是这么短的时间机器或网络也出错,你可以考虑买彩票去了。
      

  4.   

    顺便补充一下,楼主目前用的这种方法其实也没什么大不了的,因为只是保持一个对数据库的连接,只是在数据库服务器端多占用那么一点点内存而已,如果使用人数不多,而数据库服务器又不是太落伍的话完全没什么问题的。程序的稳定和逻辑上的BUG才是优先考虑的问题,等把这些都解决了,并且将来使用的人数多的时候再考虑优化连接方式么,还可以美其名曰升级。
    人家老外做软件的都是这么干的,你还不能说人家不厚道,对么。