SqlDataReader没有正确的列数

时间:2018-11-28 15:34:33

标签: c# asp.net sql-server sqldatareader

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

在下面的代码中,readerSqlDataReader,命令是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列。

1 个答案:

答案 0 :(得分:6)

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