各位说说在局域网里面访问服务器上的数据库,是一直保持连接好些,还是取完记录集或执行完命令就断开好些?

wumy_ld 2003-12-10 12:49:18
各位说说在局域网里面访问服务器上的数据库,是一直保持连接好些,还是取完记录集或执行完命令就断开好些?
谢谢!
...全文
38 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
SoHo_Andy 2003-12-10
数据库连接对象一直保持比较好
数据集对象就使用完马上释放掉好
回复
AresChen 2003-12-10
to kissoflife(明月高楼休独倚,酒入愁肠,化作相思泪!) :
我不知道网上哪里有这方面的知识,这只是原先我所作过的几个项目中的一些思路,因为我们当时所作的项目由多个大的模块组成,每个模块我们采用了一个独立的ActiveX控件去编写,主程序在根据登录用户的权限去动态加载相应的模块。在这种需求下,我们需要为所有的模块提供统一的数据库连接,所以有了这么一个缓冲池的概念。
实际的制作当中,因为几次都受到时间和难度的影响,所以最终一直没有完成,基本思路是建立一个基于collection的类,以collection去保存每一个建立connection,当有新的请求的时候,我们去这个collection中查找有没有已经存在的connection,如果有则直接使用他。之所以用一个collection来保存connection,主要原因当初考虑各个模块可能会和多钟数据源打交道,所以,最终在collection中所保存的各个connection实际上是和需要连接的数据源是1对1的关系。但是,在这个思路当中并没有考虑多线程并发的情况和trascation事务的情况,只适合与单线程的情况。如果有多线程,并且有可能使用trascation事务处理的话,这种模式是不行,需要对哪些需要使用transcation的线程单独打开一个connection。
回复
Jackile 2003-12-10
连接不断开,除非你要备份数据库之类。
数据集最好断开,除非你只是浏览数据
回复
accppss 2003-12-10
UP!
回复
嬉皮 2003-12-10
连接(Connection)不断开
数据集可断开,可 set recorder=nothing
回复
forever_chang 2003-12-10
连接用同一个,不过我会在每个窗体模块启动的时候调用这样一个函数,用来检测连接是否被中断,因为网络一旦中断相应的连接对象也会被关闭。
'****************************************************************
'//恢复对数据库的连接,在每个用到cnnfiles的窗口的load事件中调用
'****************************************************************
Public Sub ResumeCnnFiles()
Err.Clear

On Error Resume Next

rsTest.Requery

If Err.Number <> 0 Then
On Error GoTo errPro
cnnFiles.Open strCnnFiles
End If

Exit Sub

errPro:
MsgBox "无法连接到数据库服务器,请检测网络状态!", vbExclamation, "无法连接"
End
End Sub
回复
hxy2003 2003-12-10
connection保持不要每次都连
回复
davidlv 2003-12-10
连接一直保持较好,对象用完就nothing
回复
wumy_ld 2003-12-10
to AresChen(AresChen)
很感谢你说了这么多,能否介绍一下客户端的连接缓冲池这方面的资料,提供链接也可。
谢谢各位!
回复
zmrok 2003-12-10
关注ing
回复
aoenzh 2003-12-10
局域网里面访问服务器上的数据库,取完记录集或执行完命令就断开好
回复
AresChen 2003-12-10
本身来讲怎么作是无所谓的,主要是看你的具体的需求。因为每次去用connection建立连接,在服务器端需要经过验证、创建连接等等一系列手续,比较耗时,所以如果客户端数目比较少,对性能要求比较高的时候,那是一直保持着connection比较好。如果是类似web的情况,客户端数目非常大,比如数千连接,那还是连接完了就断开。
不过无论哪种方式,都有可优化的可能。
比如不断开连接的情况下,有时候程序中多个模块都会有要求访问数据库的情况,而且甚至有同步的可能,那么这个时候,我们完全可以作一个客户端的连接缓冲池来返回一个connection,当需要新一个新连接的时候,先去池子里找,如果没有合适的connection则新创建一个,否则就复制一个当前的,或者干脆就把一个空闲的connection提供给出去。
而对于web那种大客户端的情况,也可以采用类似的方式。
回复
leolan 2003-12-10
保持Connection
釋放Recordset 即 set nothing
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7451

社区成员

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