我正在使用 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.devices
与 abolfa.devices
(例如)。
关于c# - SqlDataReader 没有正确的列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53522998/