SqlDataReader 没有正确的列数

SqlDataReader does not have the correct columns count

我正在使用 asp.net (webforms) 和 C# 设计一个网站。我有一个 table 有 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)。我的 table 有 23 列,但 reader.FieldCount returns 只有 18.

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

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

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