我正在使用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列。
答案 0 :(得分:6)
SQL服务器在这里将是正确的。如果SELECT * FROM devices ...
返回18列,则:连接到的数据库上的devices
对象:具有18列。听起来您已经让架构在不同的环境/数据库之间分散。或者:您可能有多个登录名和特定于登录名的对象(即,同一数据库中两个不同数据库模式中的对象),因此:当您按自己的方式 查询时,会看到一个对象为devices
-当您以应用程序帐户查询它时,会看到一个不同对象。通常,这是dbo.devices
与abolfa.devices
(例如)。