我有一个简单的while循环来检查数据库是否有插入。如果它在循环中太长,我的尝试catch会得到“达到最大池大小”错误。所以在循环的底部我有一个连接clearallpools()
;但这仍然无法解决。
while (!quit)
{
connection to database strings timeout=400
read from database
connection.clearallpools();
}
答案 0 :(得分:4)
可能你没有关闭你的连接......你可能想要使用
while(!quit){
//do something here
using(var connection = GetMyConnection()){
//do your db reads here
}
//do validations and something more here
}
这将确保您的连接正确处理/关闭。
此外,您无需清除池。
SQLConnection / DBConnection对象实现IDisposable。你可能想通过这些
答案 1 :(得分:3)
您很可能继续在循环中打开新连接。
在循环上方打开连接是using
语句,然后在循环中使用它。另请注意clearallpools
的删除:
using(create new connection)
{
while (!quit)
{
connection to database strings timeout=400
read from database
// connection.clearallpools(); REMOVE THIS!!!!
}
}
答案 2 :(得分:0)
你正在耗尽连接池。每次读取后,您应该关闭连接,然后将其释放回池中。