Ошибка: "Нет данных для строки / столбца" с использованием OdbcDataReader

Несмотря на то, что я знаю, что есть данные для точного SQL-запроса, который я выполняю, для того факта, что я выполняю SQL-запрос непосредственно в базе данных, я постоянно получаю исключение о том, что данных не существует. Мой код ниже:

      try
        {
            dbConnection.Open();

            // Process data here.
            OdbcCommand dbCommand = dbConnection.CreateCommand();
            dbCommand.CommandText = "select forename from tblperson where personcode in (select clientcode from tblclient) and surname = '######'";
            OdbcDataReader dbReader = dbCommand.ExecuteReader();

            Console.WriteLine(dbReader.GetString(0));

            dbReader.Close();
            dbCommand.Dispose();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        finally
        {
            dbConnection.Close();
        }

Может ли кто-нибудь дать мне причины того, почему это будет происходить. Запрос должен возвращать один результат, и в настоящее время я делаю это только для того, чтобы убедиться, что он работает, а это не так. Любая помощь будет принята с благодарностью.

1 ответ

Решение

После ExecuteReader вызывается, читатель позиционируется перед первой возвращенной записью. Чтобы прочитать первую запись нужно позвонить Read()

dbReader.Read()

Или, конечно, если есть несколько строк:

while (dbReader.Read())
Другие вопросы по тегам