gpt4 book ai didi

c# - SQL 阅读器正在读取空行?

转载 作者:行者123 更新时间:2023-11-30 20:05:14 26 4
gpt4 key购买 nike

我在 SQL 中有一个表,它实际上没有任何行,但有一个说 null(我想默认情况下),如果我现在读取它,它至少会通过 reader 一次,这就是我正在尝试做的。

            int Count = 0;

SqlCommand cmd1 = new SqlCommand("Exists", conn);
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.Add(new SqlParameter("@Url", URL));
SqlDataReader rdr1 = cmd1.ExecuteReader();


if (rdr1.Read())
{
Count++;
}

如何检查 Rdr 行是否为 null 并且不执行 Counter

编辑

存储过程(不允许修改)

CREATE PROCEDURE [dbo].[Exists]
(
@Url varchar(255)
)
AS
SET NOCOUNT ON;
SELECT COUNT(*) AS Rows FROM Instances
WHERE Url = @Url

最佳答案

如果读取器从 Read() 报告 true,那么您的存储过程肯定会返回一行(或多行)。

如果您直接调用 SP(SSMS 等),它会很快告诉您是否返回了一行。每列中都为空的行仍然是一行。两种选择:

  • 修复 SP,使其不会错误地返回行(我猜它正在选择变量。然后选择变量:这将始终产生一行)
  • 更改阅读器代码以忽略不可能的数据

例如。如果“真实”行的第一列必须为非空,则只需:

if(!reader.IsDBNull(0)) Count++;

如果第一个单元格为空,则忽略该行。

关于c# - SQL 阅读器正在读取空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11738570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com