2

メソッドを終了するたびに、SqlConnection オブジェクトを適切に破棄したいと考えています。したがって、以下に示すように「using」ステートメントを使用しています。

public int Hello()
{
   using(SqlConnection con=new SqlConnection(constring))
   {
      using(SqlCommand cmd=new SqlCommand(Query,con))
      {
       try
       {
          con.Open();
          return cmd.ExecuteNonQuery();
       }
       catch(Exception ex)
       {
          throw ex;
       }
       finally
       {
          con.Close()
       }
      }
   }
}

さて、私が知りたいのは、上記のコードは

  1. ExecuteNonQuery で例外が発生したときに、適切に Connectionを破棄します。
  2. ConnectionPool の問題が発生しないことを確認してください
  3. データが正しく返されることを確認する
  4. SqlConnection で例外が発生した場合、オブジェクトは破棄されますか?

誰でもこれについて私を助けることができますか?

4

3 に答える 3

7

try/catchスローするだけの場合は必要ありません。コードを次のように変更してください。

public int Hello()
{
    using(SqlConnection con=new SqlConnection(constring))
    {
        using(SqlCommand cmd=new SqlCommand(Query,con))
        {
            con.Open();
            return cmd.ExecuteNonQuery();
        }
    }
}

例外が発生するかどうかに関係なく、接続が開いて破棄された場合、接続は閉じられます。

于 2013-08-27T12:59:05.283 に答える