Запрос ADO.NET не возвращает данные из всех столбцов - PullRequest
0 голосов
/ 15 октября 2011

Работа над небольшим проектом с VS2010 и SQLEXPRESS.

У меня есть следующая таблица с некоторыми данными, которые я ввел:

Поля таблицы

Когда я выполню это:

using (SqlConnection conn = new SqlConnection(connString)) {
    conn.Open();
    SqlCommand cmd = new SqlCommand("SELECT * FROM ACCOUNTS", conn);

    using (SqlDataReader reader = cmd.ExecuteReader()) {
        while (reader.Read()) {
            accountList.Add(new Account((int)reader["id"], (float)reader["number"], (AccountType)reader["type"], (string)reader["name"], (float)reader["balance"], (float)reader["maxdebit"], (int)reader["userId"]));
        }//Not tested
    } // Dispose Reader

    //do something here
} // Dispose implicitly called

Отладчик показывает мне следующее:

Выход отладчика

По некоторым причинам он получает только первые 4 столбца. Я никогда не видел такого поведения раньше, и код, чтобы получить его, кажется хорошим. Кто-нибудь получил какие-нибудь подсказки для меня?

РЕДАКТИРОВАТЬ: Проблема решена.

Проблема оказалась InvalidCastingException. По какой-то причине. Оказывается, проблема с отображением только 4 элементов массива на самом деле не была проблемой. Переменная FieldCount указала 7 полей, что в точности соответствует таблице. Так что все они были найдены.

Данные моей таблицы выглядят так:

Ik0Ap.png (добавьте imgur plz ... без изображений и только 2 гиперссылки, если до 10 очков репутации. Я отредактировал, чтобы показать, что это было решено, поэтому я отправляю ... поэтому у меня возникла эта проблема)

Максимум 2 гиперссылки до 10 баллов ...

Там четко написано "плавать", поэтому я сделал бросок, чтобы плавать. Но по словам отладчика VS, это двойной. Таким образом, кастинг был недействительным. Вздох

Так что это была главная проблема. Почему было показано только 4 фрагмента массива, для меня пока загадка ... Может быть, настройка VS2010 для предотвращения печати массивов с тысячами объектов в отладчике?

1 Ответ

0 голосов
/ 15 октября 2011

Попробуйте указать столбцы явно, например:

SELECT id, name, number, type, balance, ... etc.
...