加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebServices 上实现连接池的问题

发布时间:2020-12-17 01:25:09 所属栏目:安全 来源:网络整理
导读:系统前台采用应用程序,后台采用WebServices提供数据访问。 现在的问题是,后台提供的每一个WebServices方法都要先建立连接,查询数据,返回数据,关闭数据库连接。 想用连接池,不知道在WebServices里如何实现? 注:WebServices访问Oracle数据库,没使用AD

系统前台采用应用程序,后台采用WebServices提供数据访问。
现在的问题是,后台提供的每一个WebServices方法都要先建立连接,查询数据,返回数据,关闭数据库连接。
想用连接池,不知道在WebServices里如何实现?
注:WebServices访问Oracle数据库,没使用ADO.NET,使用的是dotConnect for Oracle控件,直接通过TPC/IP访问Oracle

数据库的话,简单点,用odbc,odbc有缓冲池,你自己也不用写了。
一个页面,我一个人访问,刷新以后,我一看数据库的连接,一下就变成了10,再刷新又增加10。
这个页面我用了很多查询方法,如最新排行,热点排行,,, 也就是说如果这个页面有10个方法用来查询,就会增加10个数据库连接,请问这样的问题如何解决?我用的是DataReader读取数据库内容。
访问量大一点的网站除了缓存技术,和生成静态页技术以外,他们是用什么来读取数据库内容呢?

查询完要记得关连接,要不连接数会一直增加
1.页面尽量开启输出缓存,这样减少数据库查询次数
2.可以把多次查询写在一个存储过程中,一次数据库连接把所有数据全返回来.把datareader改为dataset.
3.当然是操作结束后尽早关闭连接.
每次查询完数据数据连接关闭了么?
代码没问题,只是建议方法要改变一下,由datareader改为DataSet一次性返回.
不要这样返回DataReader,它无法保证自身变量何时释放,也就无法保证DBConnection何时被关闭。总有人以为自己“使用了CommandBehavior.CloseConnection了,肯定可以及时关闭数据库连接了”。可是实际上ExecuteReader根本没有能力保证DataReader被释放,它根本不应该画蛇添足地去承担这方面的责任。
如果非要使用DataReader,那么使用它的方式应该是:
也就是说,ExecuteReader内部绝对不打开DBConnextion(当然也就不需要画蛇添足的try...catch语句),外部使用using语句来保证正确关闭数据库连接。
也就是说,你的ExecuteReader方法如果不去在内部打开DBConnection(而仅仅是从外部传入参数),那么你编程时会真正认真地去考虑到数据库正确关闭的问题。你的问题不是出在ExecuteReader功能太少,而是自以为能实现的功能太多了,结果功能并没有实现。
这个用完了,记得释放掉。要不然,数据库连接很快就要用完了。
CommandBehavior.CloseConnection根本不能保证数据库被及时释放,它只是让数据库被及时释放的条件变得复杂了(你必须在外部代码还要将ExecuteReader返回值放在using(){}语句的头部)。所以最好是 在你的SQLHelper的ExecuteReader中根本就不去打开数据库连接
反过来说,一看到CommandBehavior.CloseConnection就知道这个玩意儿会被误用。
一直感觉,reader用要关闭,但是你如果关闭了连接以后,reader又不能读取。。就一直没这么用过。现在好像有点明白怎么去用reader了,但是sp的回复,不在内部打开连接的话怎么去读呢?那在哪里打开呢?
看完了以后进行了相应的修改,不知这样如何?
不过,个人觉得CommandBehavior.CloseConnection还是值得用的.
主要是场合在于:
?一个方法return一个datareader,而另一个方法调用这个datareader
关键在于当这个datareader在使用结束后,一定要"datareader.Close()"
即一定要显式地关闭datareader,同时与其关联的连接就会被关闭.
而很多人误以为使用了CommandBehavior.CloseConnection,连接会自动关闭,而没有想到去关闭dr,从而导致连接也没有及时关闭.
来源: 足球直播

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读