C# 尝试返回“选择计数(Id)”时System.IndexOutOfRangeException
我试着查找这个问题,但没有其他问题真正合适。我有一个网页,我将显示分析。一个统计数据是用户总数,我试图获取sql数据库中用户表中的行总数。我原以为Id是int,但似乎是varchar128。我将包括错误和代码。谢谢 System.Data.dll中出现“System.IndexOutOfRangeException”类型的异常,但未在用户代码中处理C# 尝试返回“选择计数(Id)”时System.IndexOutOfRangeException,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我试着查找这个问题,但没有其他问题真正合适。我有一个网页,我将显示分析。一个统计数据是用户总数,我试图获取sql数据库中用户表中的行总数。我原以为Id是int,但似乎是varchar128。我将包括错误和代码。谢谢 System.Data.dll中出现“System.IndexOutOfRangeException”类型的异常,但未在用户代码中处理 我认为问题在于,您从SQL中获得的列名不是您所期望的。我相信下面对代码的更改将解决这个问题 const string sqlText = @" SE
我认为问题在于,您从SQL中获得的列名不是您所期望的。我相信下面对代码的更改将解决这个问题
const string sqlText = @"
SELECT COUNT(Id) AS Id
FROM AspNetUsers
";
我认为问题在于,您从SQL中获得的列名不是您所期望的。我相信下面对代码的更改将解决这个问题
const string sqlText = @"
SELECT COUNT(Id) AS Id
FROM AspNetUsers
";
IndexOutOfRangeException表示没有Id列返回给SqlDataReader 解决问题的第一步可能是发现实际返回的列。下面是一个如何执行此操作的示例:
IndexOutOfRangeException表示没有Id列返回给SqlDataReader 解决问题的第一步可能是发现实际返回的列。下面是一个如何执行此操作的示例:
您的错误来自以下行:
UserCount = DBUtils.GetValue<string>(sdr["Id"]);
因为您的查询没有返回Id为的字段
最简单的修复方法是:
UserCount = DBUtils.GetValue<string>(sdr[0]).Tostring();
您的错误来自以下行:
UserCount = DBUtils.GetValue<string>(sdr["Id"]);
因为您的查询没有返回Id为的字段
最简单的修复方法是:
UserCount = DBUtils.GetValue<string>(sdr[0]).Tostring();
您可以将sdr[Id]更改为sdr[0]或向countId添加别名,因为没有以Id作为名称返回的列。您可以将sdr[Id]更改为sdr[0]或向countId添加别名,因为没有以Id作为名称返回的列