SqlDataReader没有数据,但HasRow为true

时间:2017-08-23 02:59:24

标签: c# sql-server sqldatareader no-data

我通过 ExecuteReader()。从SQL数据库中读取数据 没有数据满足条件,但 HasRow 返回true。当我尝试从阅读器读取数据时,我得到了异常: '数据为空。无法在空值上调用此方法或属性。'

SqlDataReader reader = command.ExecuteReader();     
if (reader.HasRows)
            try
            {
                if (reader.Read())
                {
                        string aa = reader.GetFieldType(0).Name; // aa returns 'DateTime'
                        dateStart.MinDate = reader.GetDateTime(0); //exception on this line
                        dateEnd.MinDate = reader.GetDateTime(0);
                        dateStart.Value = reader.GetDateTime(0);
                }
            }
            finally
            {
               reader.Close();
            }

提前致谢 Usjwo

1 个答案:

答案 0 :(得分:0)

如果sc的零索引内的数据包含SqlDataReader,则无法直接使用DBNull方法,因为GetDateTime无法直接转换为{ {1}}。你可以使用IsDBNull和三元运算符&在分配给其他属性之前存储DBNull.Value结果的DateTime变量(另请参阅此example):

Nullable<DateTime>