SQL Server"SELECT COUNT(field)FROM tblname"返回null

Mit*_*aff 0 c# sql-server

这很奇怪.我的c#应用程序中有一个非常简单的SQL查询,用于计算SQL Server表中的记录.代码段如下:

    // Returns the number of ports defined for a given slot.
    int returnval = 0;
    connection.Open();
    SqlCommand command = new SqlCommand("SELECT COUNT(Slotted_Port_UID) FROM tblSlottedCardPorts WHERE Slot_ID = @SlotID ", connection);
    command.Parameters.AddWithValue("@SlotID", EquipmentSlotID);
    SqlDataReader reader = command.ExecuteReader();
    if (reader.HasRows)
    {
        if (!reader.IsDBNull(0))
        {
            returnval = reader.GetInt32(0);
        }
    }
    reader.Close();
    connection.Close();
    return returnval;
Run Code Online (Sandbox Code Playgroud)

当我将SQL语句直接复制并粘贴到SQL Server mgmt studio中时,查询将按预期返回,返回0或正整数,具体取决于行数.但是,尽管代码传递了.HawRows条件,但它在reader.IsDBNull(0)条件上失败.tblSlottedCardPorts存在,Slotted_Port_UID列是唯一的整数.有什么建议吗?我无法理解为什么COUNT会返回Null值,因为不涉及连接或其他因素.

感谢您的任何建议!

米切尔

hou*_*se9 6

对于此类型的查询 - 使用.ExecuteScalar()而不是datareader

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx


Mar*_*ins 5

你需要打电话Read才能到达第一行.

if (reader.HasRows)
{
    reader.Read();
    if (!reader.IsDBNull(0))
    {
        returnval = reader.GetInt32(0);
    }
}
Run Code Online (Sandbox Code Playgroud)