SQL连接池

时间:2010-07-29 14:53:00

标签: c# sql-server

我会在短时间内对数据库进行多次查询。 在过去,当我需要再次与sqlserver通信时,我总是关闭连接并重新打开 - 这对我很有帮助。但是现在当我尝试在很短的时间内完成这项工作时,我得不到任何连接可用的消息。然后我想我会尝试在应用程序的生命周期中保持连接打开,到目前为止我还没有遇到任何问题。我只是想知道其他人对这个问题的看法......我是在一条短暂的灾难之路吗?

另外一件事我已经发现我真的不需要调用连接open()方法,连接似乎没有调用就可以工作 - 这是什么处理?

void main()
{
SqlConnection cn = new SqlConnection();
cn.ConnectionString = <connection>;
tmr.interval=100;
tmr.Elapsed += new System.Timers.ElapsedEventHandler(tmr_Elapsed);
}

void tmr_elapsed()
{
tmr.Enabled = false;
SqlDataAdapter da = new SqlDataAdapter(query, cn);
da.Fill(dt);
tmr.Enabled = true;
}

C#,sql-server 2000,.net 2.0

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

你真的不应该打开这个连接然后重复使用它。当然,你的计时器速度非常快(每100毫秒),但与此同时,你保持这个连接打开很长时间。

相反,当你在计时器的事件处理程序中完成时,你应该打开连接并正确处理它。如果你使用using语句进行连接,你应该没问题,也不用担心资源耗尽。

至于不必打开连接,SqlDataAdapter会为您执行此操作,根据需要打开和关闭连接。它将使连接保持在它完成工作后传入它所处的状态(如果它打开则保持打开状态,或者打开然后关闭时关闭它)。