在阅读之前检查SQLDataReader的最佳方法

时间:2016-07-25 14:38:15

标签: asp.net c#-4.0 coding-style

我正在使用SqlDataReader从DB读取数据。在读取数据之前,最好的检查方法是什么。哪一个最好的3个

方法1

 using (SqlDataReader objReader = sqlCommand.ExecuteReader())
                    {
                        if (objReader != null)
                        {
                            while (objReader.HasRows && objReader.Read())
                            {
                                //code
                            }
                        }
                    }

方法2

                using (SqlDataReader objReader = sqlCommand.ExecuteReader())
                    {
                        if (objReader != null)
                        {
                            while (objReader.Read())
                            {
                                //code
                            }
                        }
                    }

方法3

               using (SqlDataReader objReader = sqlCommand.ExecuteReader())
                    {

                            while (objReader.HasRows && objReader.Read())
                            {
                                //code
                            }

                    }

1 个答案:

答案 0 :(得分:1)

Afaik SqlCommand.ExecuteReader 从不返回null。它可以抛出各种刺激,但它永远不会为空。所以这项检查是多余的。

您也不需要在每次循环迭代中检查它是否HasRows。该信息仅在开始时有用,而不是每次都有用。但这没有必要。如果您在没有记录时尝试读取记录,则不会收到任何错误。

所以我更喜欢(基于意见)这个:

using (SqlDataReader objReader = sqlCommand.ExecuteReader())
{
    if(objReader.HasRows)
    {
        while (objReader.Read())
        {
            //code
        }
    }
    else
    {
      // output/ log this? 
    }
}