欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 运维知识 > 数据库 >内容正文

数据库

.net 访问mysql链接池-ag凯发k8国际

发布时间:2024/10/14 数据库 27 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 .net 访问mysql链接池_c# – .net sqlconnection类,连接池和重新连接逻辑 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我们有一些客户端代码,它使用.net中的sqlconnection类与sqlserver数据库通信.它会间歇性地失败并出现此错误:

“executereader需要一个开放且可用的连接.连接的当前状态为closed”

“临时”ag凯发k8国际的解决方案是重新启动过程,之后一切正常 – 但是,这显然不能令人满意.

代码保留了sqlconnection实例的缓存,每个数据库一个.

我们想重新编写代码,但在此之前,我需要了解一些事情:

我的第一个问题是:重复连接和断开sqlconnection对象是否效率低下,或者底层库是否代表我们执行连接池?

// is this bad/inefficient?

for(many-times)

{

using(sqlconnection conn = new sqlconnection(connectionstring))

{

// do stuff with conn

}

}

因为我们的代码没有执行上述操作,所以问题的可能原因似乎是在连接的“生命周期”期间底层sqlserver数据库发生了某些事情,导致连接被关闭…

如果事实证明“缓存”sqlconnection对象是值得的,那么处理所有可以简单地通过“重新连接”到数据库来解决的错误的建议方法是什么.我在谈论的场景如下:

>数据库脱机并重新联机,但客户端进程在发生这种情况时没有打开的事务

>数据库“断开连接”,然后“重新连接”

我注意到sqlconnection上有一个“state”属性…是否有适当的方法来查询?

最后,我有一个测试sqlserver实例设置了完全访问权限:我怎样才能再现确切的错误“executereader需要一个开放的可用连接.连接的当前状态是关闭的”

总结

以上是ag凯发k8国际为你收集整理的.net 访问mysql链接池_c# – .net sqlconnection类,连接池和重新连接逻辑的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图