エラーメッセージが表示されます。 タイムアウトが切れています。プールから接続を取得する前にタイムアウト期間が経過しています。これは、プールされたすべての接続が使用中で、プールの最大サイズに達したために発生した可能性があります。- SQLコマンドのループで最大接続プールエラーを回避する方法
マイコード:
clsDBConn dbConn = new clsDBConn();
SqlDataCommand CMD;
private void Recompute()
{
CMD = new SqlCommand("SELECT * FROM tblEmployee", dbConn.connection);
SqlDataReader EmplReader = CMD.ExecuteReader();
while (EmplReader.Read())
{
while(DateFrom >= DateTo)
{
//Some Reader
//Lots of SQL Command ExecuteNonQuery();
}
}
}
私は、このエラーに関するいくつかのソリューションをお読みください。彼らは私が接続を開いて閉じるべきだと言います。 しかし、問題は、接続が閉じている場合、私はsqlcommandsで連結する必要があるリーダーの値にアクセスできません。
は、私が50プラス従業員ルーピングしていますし、各従業員は、時間の記録(Lates、OT、Undertimesなど)
私は何をすべきを計算しますか?
エラーコマンドのタイムアウトはありますか? 私はあなたの従業員をメモリにロードすることをお勧めします。次に、処理するために各従業員のためのループを行います。 – ngeksyo
'using'ステートメントで' IDisposable'を実装している 'SqlClient'オブジェクトの使用をラップします。 (実際には、そのアドバイスはSQLのものだけでなく、ほとんどの 'IDisposable'に適用されます) –
リソースを破棄する必要があります。 – jjj