请教一个关于数据库连接已达最大连接数的问题

jasonlee0927 2008-05-25 01:14:01
现在公司有个项目(外包给别人做的)老是在操作过程中报“数据库连接池已达最大连接数”的错。我检查了下程序,里面都是用的DataReader,里面的数据库连接也关了的。但是就是一个用户操作次数多了,就报错,运行不了。他的数据库连接串写在global的Application_Start事件里的

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application startup

Application("MyITSchoolConnectionString") = "server=.\SQLEXPRESS;uid=abc;pwd=1234;database=test"
End Sub

会不会是因为这个的关系啊
...全文
234 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liccon 2008-06-15
  • 打赏
  • 举报
回复
因为你用的是SQLEXPRESS, 有连接数的限制
jasonlee0927 2008-05-25
  • 打赏
  • 举报
回复
由于项目是之前外包给其他公司做的,现在公司和那个公司已经没有合作了,所以不可能再去把项目丢给之前的那家公司负责解决了。只能是自己去找了再解决了。
还是多谢大家的帮忙。
yuanlai123 2008-05-25
  • 打赏
  • 举报
回复
对,用using来写,可以搜MSDN "using 语句 [C#]"
  • 打赏
  • 举报
回复
[Quote=引用楼主 jasonlee0927 的帖子:]
但是就是一个用户操作次数多了,就报错,运行不了
[/Quote]

这个现象完全做出“人工读代码来判断程序运行时BUG不可靠”的结论。

推行好的结构,让傻瓜也能写好程序,避免那些貌似很技术化但是忘记了质量控制的编程风格。对程序来说,少写代码,就是最好的编码。

  • 打赏
  • 举报
回复
[Quote=引用楼主 jasonlee0927 的帖子:]
现在公司有个项目(外包给别人做的)老是在操作过程中报“数据库连接池已达最大连接数”的错。我检查了下程序,里面都是用的DataReader,里面的数据库连接也关了的。但是就是一个用户操作次数多了,就报错,运行不了。他的数据库连接串写在global的Application_Start事件里的
.....................

Application("MyITSchoolConnectionString") = "server=.\SQLEXPRESS;uid=abc;pwd=1234;database=test"

.....................

会不会是因为这个的关系啊
[/Quote]

这样写并没有任何问题。

我建议你首相让这个人负责解决,因为这类问题是低级、隐藏、习惯性问题,如果属于固有编程设计习惯比较不可靠问题不能解决,应该考虑换人或者换系统、换思路。

如果你必须自己修改程序,那么你可以把所有的“open数据库连接”的地方都修改为using(...){}形式,在“....”中实例化连接对象。一个地方打开连接,然后别的看似无关的地方(有可能执行也有可能不执行,例如抛出异常时)负责关闭连接,这种面条式的逻辑散布在整个应用程序的不同地方,这是很危险的结构。由于SQL Server连接时基于连接池的,因此你应该在代码结构上就使用using(){}这种结构确保肯定可以及时关闭连接。我不相信人的眼睛可以看出连接是否关闭了,你应该使用程序结构来保证,不要轻易断言“里面的数据库连接也关了”。

使用using(){}来管理数据库连接的程序,根本不用去动脑筋冥思苦想是否关闭了数据库,结构上确保必然关闭连接,想不关闭也难。
wxg22526451 2008-05-25
  • 打赏
  • 举报
回复
数据库连接关了资源也把它释放掉,
在finally释放资源会好点。
建议连接字符串放在 web.config 里
milo4210 2008-05-25
  • 打赏
  • 举报
回复
连接字符串最好放在 web.config 里

62,040

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧