Ошибка: «Нет данных для строки / столбца» с использованием OdbcDataReader - PullRequest
5 голосов
/ 24 декабря 2011

Несмотря на то, что я знаю, что есть данные для точного 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 Ответ

6 голосов
/ 24 декабря 2011

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

dbReader.Read()

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

while (dbReader.Read())
...