SQL Server "SELECT COUNT(field) FROM tblname" retu
本文关键字:quot FROM tblname retu field COUNT Server SELECT SQL | 更新日期: 2023-09-27 18:36:59
这很奇怪。 我的 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;
当我将 SQL 语句直接复制并粘贴到 SQL Server 管理工作室时,查询会按预期返回,返回 0 或正整数,具体取决于行数。 但是,尽管代码传递了 .HawRows条件,它在读取器上失败。IsDBNull(0) 条件。 tblSlottedCardPorts 存在,Slotted_Port_UID列是唯一的整数。 对此有什么建议吗? 我不明白为什么 COUNT 会返回 Null 值,因为不涉及连接或其他因素。
感谢您对此的任何建议!
米切尔
对于此类型的查询 - 使用 .ExecuteScalar()
而不是数据读取器
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx
您需要调用Read
才能到达第一行。
if (reader.HasRows)
{
reader.Read();
if (!reader.IsDBNull(0))
{
returnval = reader.GetInt32(0);
}
}
更简单的语句是
int returnval = 0;
using (SqlConnection con = new SqlConnection(connStr))
{
SqlCommand command = new SqlCommand("SELECT COUNT(Slotted_Port_UID) FROM tblSlottedCardPorts WHERE Slot_ID = @SlotID ", connection);
command.Parameters.AddWithValue("@SlotID", EquipmentSlotID);
returnval = Convert.ToInt32(command.ExecuteScalar());
}
我在SQL中有这样的东西:
declare @NumberOfRecords int;
select @NumberOfRecords=count(*) from ...
return @NumberOfRecords;
存储过程从 SQL 管理工作室运行正常,但在从代码调用时返回 null。删除@NumberOfRecords
变量后,查询从代码开始工作:
select count(*) from ...