以下のようにデータベース アクセス コードを使用しました。
//gets the connection and create transaction
SqlTransaction transaction = SelectConnection();
try
{
dsRecordDataset = new DataSet();
SqlParameter[] param = new SqlParameter[1];
string[] taleNames = new string[1];
taleNames[0] = "RecordSet";
param[0] = new SqlParameter("@Mode", Mode);
SqlHelper.FillDataset(transaction, CommandType.StoredProcedure,
"spProject", dsRecordDataset, taleNames, param);
transaction.Commit();
return dsRecordDataset;
}
catch (Exception ex)
{
transaction.Rollback();
throw ex;
}
私が見つけた問題は、接続を閉じたことがないため、接続プールがオーバーフローしてユーザーにエラーが発生することがあります。私は次のことを明確にする必要があります
- asp.net の既定の設定に従って接続プールがリセットされるのはいつですか?
- トランザクションのコミットは接続と関係がありますか?
try catch ブロックの後に次のコードを使用しようとしました
finally
{
if (transaction.Connection.State == ConnectionState.Open)
{
transaction.Connection.Close();
}
}
しかし、接続はnullであり、エラーが発生します。
- 上記のコードで接続を閉じる方法はありますか?