c/s程序,是整个程序用一个连接呀,还是每次操作都连接,操作完就关闭呀,哪种是正宗的用法呀?

tdcq123 2007-12-27 10:02:46
c/s程序,是整个程序用一个连接呀,还是每次操作都连接,操作完就关闭呀,哪种是正宗的用法呀?
-------------------------
我现在的作法是,启动程序时,建立一个全局的连接对象,在不退出我的程序之前,所有操作都使用共享这个连接对象.
但是现在发现网上很多人说这种方法不好,据说连接要即用即连,用后就关断.可是又说连接是很费资源的.每次操作都连接一次,也不好,我现在有点迷茫了,如何做才是对的呀,比如一些知名的商用软件,在这一点上都是如何实现的呀,请大家指教
...全文
76 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tdcq123 2007-12-28
再听听意见,就准备结贴了。
回复
asa5880 2007-12-27
要看具体业务,

我自己主张的原则:尽量将操作数据库频繁的放在一起用一次OPEN或事务搞定,尽量缩短OPEN时间
当然会有个别现象就是客户端一直在操作,那就缓存起来好了

千万不要太相信网络连接,万一闪断就有可能出现锁等其它乱七八糟的问题

回复
lcsfxs 2007-12-27
用INI文件连接,我就是用这种方案的,
我的软件:http://shareware.skycn.com/author_softlist.php?author_id=26655
回复
Tiger_Zhao 2007-12-27
看具体情况:

客户端数目
如果只有有限几个客户端,那么常连数据库可以省去频繁连接/关闭数据库的开销,不会出现数据库连接数不足的问题。
如果有许多个客户端,如果全部保留连接,那么数据库的连接数会不足,因此使用需要时连接可以降低资源分配冲突的概率。

网络稳定性
在局域网中,通常不会出网络故障,那么一直开着连接也无所谓,可以认为连接是一直可用的。
在远程数据库或其它类似的不稳定网络中,每次使用前进行连接,那么可以将网络故障的错误统一处理,无论从业务逻辑还是程序结果上都得到简化。
回复
tdcq123 2007-12-27
自已顶一下,新手,多帮助.
回复
顺便补充一下,楼主目前用的这种方法其实也没什么大不了的,因为只是保持一个对数据库的连接,只是在数据库服务器端多占用那么一点点内存而已,如果使用人数不多,而数据库服务器又不是太落伍的话完全没什么问题的。程序的稳定和逻辑上的BUG才是优先考虑的问题,等把这些都解决了,并且将来使用的人数多的时候再考虑优化连接方式么,还可以美其名曰升级。
人家老外做软件的都是这么干的,你还不能说人家不厚道,对么。
回复
没有什么一定的规则,关键是看你实际需求了。
如果绝大部分是浏览数据,那么只需要打开时读一次就可以关闭了,之后只是在需要看最新数据的时候再连接和刷新也无妨,就譬如你在看BBS,也只是加载页面的时候读了一次数据,之后你要看最新帖子的时候才需要刷新,这样对于数据库几乎没有什么压力。
如果你这个用户主要是更新数据的,那么几乎每一分钟都会向数据库提交新的更改,那样的话,一个长期的连接会更好。
而楼上说的则是另一个问题了,那就是在进行数据库操作的时候要尽量缩短读写的过程(这和是否长连接数据库每关系,并且两者都应该这么做)。
比如你编辑一条记录的时候,先EDIT,然后在用户向每一个TEXT里写内容的时候改字段内容,最后再等用户按下“确定”再UPDATE,那么可以说你的程序死定了,因为你永远无法预测用户将在这一个过程中消耗多少时间,中间计算机和网络出错的几率也无法预测。好的方法就是:用户按“编辑”或者“添加”的时候程序什么也不作,只是设一个标志,用来表明用户要进行的是编辑还是添加,用户更改TEXT内容的时候最多做点数据有效性验证,比如是否超过数据库字段长度或类型检测等等,只在用户按下“确定”之后才对数据库进行操作,此时就可以看前面的那个标记了,是编辑的就编辑,是添加的就添加,一个TEXT一个字段往里写,最后一个UPDATE,整个过程才零点零几秒都不到,要是这么短的时间机器或网络也出错,你可以考虑买彩票去了。
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7451

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告