为了账号安全,请及时绑定邮箱和手机立即绑定

SqlServer 数据库连接问题? 请高手解答

SqlServer 数据库连接问题? 请高手解答

撒科打诨 2018-12-06 13:52:23
我现在会在一个for 循环里面对数据库进行操作,每一次操作后,都会把SqlConnection 关闭。 但是当我的for循环次数太多时,就会出现异常,在网上查了下资料,说是 SqlConnection的Close() 方法,并不会即时的关闭数据库连接,而是会存在一个默认的时间,当过了这个时间后,他才会真正的关闭,请问,有能即时关闭的方法么?或者修改那个默认时间的方法? (SqlConnection 的 Dispose() 方法除外)
查看完整描述

9 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

for 循环 完毕后在关数据库连接。这样可以减少资源耗费。Close虽然不会立即关闭,但是从连接池获取连接也是要耗费资源的。sql尽量用参数方式,这样可以减少dbserver cpu的占用率,因为sql不需要重复编译。大概代码如下:

using(var con=new Connection())

{

    var command=//创建Parameter列表和SqlCmmand

     for(int i=0;i<max;i++)

     {

            //把Value值 给 commnad.Parameters

            command.execute()

      }

}

当然还有其他的优化方式,但至少要做到上面那种。

查看完整回答
反对 回复 2019-01-21
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

你能把For里要做的事情直接在一次操作数据库的时候做完不就更吗。?至少像你这样操作数据库的还真不多见

查看完整回答
反对 回复 2019-01-21
?
绝地无双

TA贡献1946条经验 获得超4个赞

如果是同一个链接的话,为什么每次要new一个链接?

查看完整回答
反对 回复 2019-01-21
?
POPMUISE

TA贡献1765条经验 获得超5个赞

出现什么样的异常?

查看完整回答
反对 回复 2019-01-21
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

就是报超时。而且这些方法调用的是封装后的SqlHelper 在这个类里的每个方法都会打开连接,关闭连接。所以造成这样一种情况。有没有办法能即时关闭连接。
查看完整回答
反对 回复 2019-01-21
?
青春有我

TA贡献1784条经验 获得超8个赞

每次打开的时候判断它的状态,使用using。

查看完整回答
反对 回复 2019-01-21
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

using(SQLConnnection conn=new *****)

{

     //

}

这样每次用完就会自己关闭了。但你的需求很诡异啊。是非常诡异,我们都是尽量减少数据库连接,因为连接数据库是很浪费性能的。数据库连接最好是单例的,放在那边,一次初始化永远使用多好啊

查看完整回答
反对 回复 2019-01-21
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

既然你都用FOR了,为什么不把SQL全拼在一起,然后一次性的执行数据库操作呢?这样对性能的资源都消耗的少

查看完整回答
反对 回复 2019-01-21
  • 9 回答
  • 0 关注
  • 608 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信