c# - SqlDataReader 没有正确的列数

标签 c# asp.net sql-server sqldatareader

我正在使用 asp.net (webforms) 和 C# 设计一个网站。我有一个包含 23 列的表格。

在下面的代码中,reader 是一个SqlDataReader,command 是一个SqlCommand 对象。我正在使用以下代码从中输出查询结果:

command.CommandText = "SELECT * FROM devices WHERE device_level='" + ACCESS_LVL + "'" + "ORDER BY device_name";
reader = command.ExecuteReader();

然后我使用

遍历它
while(reader.Read());

输出结果。

但是访问某些列会导致索引超出范围异常(索引超过 17)。我的表有 23 列,但 reader.FieldCount 只返回 18。

调试代码时,我的本地计算机上没有发生此问题。只有当我将项目上传到我的网络服务器时才会发生。

使用 mylittleadmin 数据库管理面板(安装在远程服务器上)我可以看到所有 23 列。

最佳答案

SQL 服务器在这里是正确的。如果 SELECT * FROM devices ... 返回 18 列,则:正在连接的数据库上的 devices 对象:有 18 列。听起来你让你的模式在不同的环境/数据库之间有所不同。或者:您可能有多个登录名和特定于登录名的对象(即同一数据库中两个不同数据库模式中的对象),因此:当您查询它时如您所见一个对象作为设备 - 当您作为应用程序帐户查询它时,您会看到一个不同对象。通常,这将是 dbo.devicesabolfa.devices(例如)。

关于c# - SqlDataReader 没有正确的列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53522998/

相关文章:

选择名为 YEAR 的列时出现 SQL 错误

c# - 如何将 Artifact 归档到特定目录?

c# - 南希的主机目录

c# - 文件被两个进程使用

SQL Server 行上次修改日期

sql-server - Oracle 和 SQL Server 中的 nvarchar 和 varchar

c# - 代码在 Visual Studio 中运行,但在同一系统中的 IIS 上托管时出现编译器错误

c# - 为什么在使用 Entity Framework 实现存储库模式时使用接口(interface)?

c# - Newtonsoft.Json.JsonSerializationException 未由用户代码处理

c# - 在 ASP.NET Core 中搭建现有数据库(Scaffold-DbContext)