SqlDataReader не имеет правильное количество столбцов - PullRequest
0 голосов
/ 28 ноября 2018

Я разрабатываю сайт, используя 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.

Эта проблема не возникает на моем локальном компьютере при отладке кода.Это происходит только когда я загружаю проект на свой веб-сервер.

Используя панель управления базой данных mylittleadmin (установлена ​​на удаленном сервере), я вижу все 23 столбца.

1 Ответ

0 голосов
/ 28 ноября 2018

SQL-сервер будет корректным.Если SELECT * FROM devices ... возвращает 18 столбцов, то: объект devices в базе данных, к которой подключено: имеет 18 столбцов .Похоже, вы позволили своим схемам расходиться между различными средами / базами данных.Альтернативно: возможно, что у вас есть несколько учетных записей и объекты, специфичные для входа (т.е. объекты в двух разных схемах базы данных в одной и той же базе данных), поэтому: когда вы запрашиваете его , как , вы видите один объект как devices - и когда вы запрашиваете его как учетную запись приложения , вы видите другой объект.Как правило, это будет dbo.devices против abolfa.devices (например).

...