C# DbDataReader返回null

C# DbDataReader返回null,c#,sql,sql-server,stored-procedures,C#,Sql,Sql Server,Stored Procedures,我创建了一个存储过程来从表中取出一行 spGetDepartment @ID int AS BEGIN SELECT [ID],[Name],[Description] FROM tblDepartments WHERE [ID] = @ID END 在SQL中测试存储过程时,我得到了预期的结果 当我尝试从代码(C#)调用存储过程并调试页面时,我可以看到读卡器被正确填充,但当尝试读取它时,它会变为null值。 下面是调用存储过程的代码 public s

我创建了一个存储过程来从表中取出一行

    spGetDepartment
    @ID int
AS
BEGIN
    SELECT [ID],[Name],[Description]
    FROM tblDepartments
    WHERE [ID] = @ID

END
在SQL中测试存储过程时,我得到了预期的结果

当我尝试从代码(C#)调用存储过程并调试页面时,我可以看到读卡器被正确填充,但当尝试读取它时,它会变为null值。 下面是调用存储过程的代码

public static Department GetDepartment(string ID)
    {
        Department Dept = new Department();

        DbCommand comm = DataAccess.CreateCommand();
        try
        {
            comm.CommandText = "spGetDepartment";
            // create a new parameter
            DbParameter _ID = comm.CreateParameter();
            _ID.ParameterName = "@ID";
            _ID.Value = ID;
            _ID.DbType = DbType.Int32;
            comm.Parameters.Add(_ID);
            comm.Connection.Open();
            DbDataReader rdr = comm.ExecuteReader();
            while (rdr.Read()) 
            {
                Dept.DepartmentID = Convert.ToInt32(rdr["ID"].ToString());
                Dept.DepartmentName = rdr["Name"].ToString();
                Dept.Description = rdr["Description"].ToString();
            }
            rdr.Close();
        }
        catch (Exception ex)
        {
            Utilities.LogError(ex);
        }
        finally
        {
            comm.Dispose();
            comm.Connection.Close();
        }
        return Dept;
    }
试试这个:

SqlDataReader rdr = comm.ExecuteReader();
if (rdr.HasRows)
{
    reader.Read();
    Dept.DepartmentID = Convert.ToInt32(rdr["ID"].ToString());
    Dept.DepartmentName = rdr["Name"].ToString();
    Dept.Description = rdr["Description"].ToString();
    reader.Close();
}
else
{ //No data
}

请澄清一下,您是说
rdr[“ID”]
返回空值吗?或者别的什么?当调试器到达行While(rdr.read())时,它进入rdr.close()步骤。它不会进入while循环,这是我将while语句更改为if语句的技巧,如上面所示。非常感谢你。