我正在使用asp.net(webforms(和C#设计一个网站。我有一张有23列的表。
在下面的代码中,reader
是SqlDataReader
,命令是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列。
调试代码时,本地计算机上不会出现此问题。只有当我将项目上传到我的web服务器时才会发生这种情况。
使用mylittleadmin数据库管理面板(安装在远程服务器上(,我可以看到所有23列。
这里的SQL服务器是正确的。如果SELECT * FROM devices ...
返回18列,则:连接到的数据库上的devices
对象:有18列。听起来你已经让你的模式在不同的环境/数据库之间产生了分歧。或者:您可能有多个登录和登录特定的对象(即同一数据库中两个不同数据库模式中的对象(,因此:当您以的方式查询时,您会看到一个对象为devices
,而当您以应用程序帐户的形式查询时,会看到一个不同的。通常,这将是dbo.devices
与abolfa.devices
(例如(。