0

以下のコードは接続を適切に閉じていますか..

public static bool Hello(string sqlQuery)
        {
            SqlDataReader dataReader = null;
            var isExist = false;

            using (var aeConnection = new SqlConnection(ConnectionString))
            {
                try
                {
                    var aeCommand = new SqlCommand(sqlQuery, aeConnection)
                        {
                            CommandType = CommandType.Text
                        };

                    aeConnection.Open();
                    dataReader = aeCommand.ExecuteReader(CommandBehavior.Default);

                    while (dataReader.Read())
                    {
                       int vinCount;
                        int.TryParse(dataReader["VINCount"].ToString(), out vinCount);

                        if (vinCount == 0)
                        {
                          isExist = true;
                         }
                    }
                }
                catch (Exception ex)
                {
                   if (dataReader != null)
                   {
                       dataReader.Close();
                   }
                }
            }

            return isExist;
        }
4

1 に答える 1

1

はい、接続を適切に閉じています。使用中のブロックが終了すると(正常終了またはエラーによって)閉じられます。

using ステートメントは、try/finally ブロックにコンパイルされます

using (var aeConnection = new SqlConnection(ConnectionString))
            {
}

として扱われます。

SqlConnection aeConnection = null;
try
{
    aeConnection  = new SqlConnection(ConnectionString);
}
finally
{
   if(aeConnection!= null)
        ((IDisposable)aeConnection).Dispose();
}
于 2013-09-12T10:25:09.037 に答える