Ошибка при проверке, имеет ли столбец SqlDataReader нулевое значение - PullRequest
0 голосов
/ 16 февраля 2012

Один из парней, работающих над моим проектом, продолжает получать сообщение об ошибке, когда код пытается проверить, возвращает ли SqlDataReader нулевое значение в столбце. Он запускает этот код:

if (!DB_Conn.isConnected()) DB_Conn.Connect();
using (SqlDataReader dr = DB_Conn.QueryDB(query))
{
   if (dr.HasRows && !dr.IsDBNull(0))
   {
       maxID = dr.GetInt32(0);
   }
}

Но выдает ошибку, что это неверное значение для чтения, когда в команде! Dr.IsDBNull (0) нет данных.

Если я запускаю этот же код, но запрашиваю другую таблицу, он работает.

Кроме того, я запускаю оба запроса, и они возвращают ожидаемое нулевое значение. Запросы:

SELECT MAX(ID) FROM Loan;
SELECT MAX(ID) FROM InternationalSwap;

Я не думаю, что запросы влияют на причину, по которой мы получаем эту ошибку на одном компьютере, а не на другом.

1 Ответ

5 голосов
/ 16 февраля 2012

Вам нужно вызвать метод Read, прежде чем пытаться получить доступ к любым столбцам:

while (dr.Read())
{
    if (!dr.IsDBNull(0))
        maxID = dr.GetInt32(0);
}

Но ... если вам нужно только одно значение, вам, вероятно, следует использоватьчто-то вроде ExecuteScalar, а не для чтения данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...