@pimanov3

Как исправить ошибку "System.InvalidOperationException: "Недопустимая попытка чтения при отсутствии данных.""?

Как исправить ошибку "System.InvalidOperationException: "Недопустимая попытка чтения при отсутствии данных.""?
using (SqlConnection connection = new SqlConnection(@"Data Source=...; Initial Catalog=Airlines; Integrated Security=True"))
{
    connection.Open();
    string sqlExpression = "SELECT ID FROM Users WHERE ID = 1";
    SqlCommand LoginData = new SqlCommand(sqlExpression, connection);
    SqlDataReader LoginReaderData = LoginData.ExecuteReader();

    if (LoginReaderData.HasRows)
    {
        object ID = LoginReaderData["ID"];

        Mail.Text = (string)ID;
    }
    else
    {
        MessageBox.Show("Пользователь не найден");
    }
}

5f324412d14e7659306673.png
  • Вопрос задан
  • 2462 просмотра
Решения вопроса 1
ayazer
@ayazer
Sr. Software Engineer
вы неправильно ридер используете.

SqlDataReader loginReaderData = LoginData.ExecuteReader();

 while (loginReaderData.Read())
 {
    var id = loginReaderData["ID"];
    // ...    
  }


Но судя по примеру - вам вообще не ридер нужен, а нужно https://docs.microsoft.com/en-us/dotnet/api/system...

string sqlExpression = "SELECT ID FROM Users WHERE ID = 1";
SqlCommand loginData = new SqlCommand(sqlExpression, connection);
var id = (string)loginData.ExecuteScalar();
//...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
Ну как минимум попросить reader прочитать [очередную] строку (Read()) и уже тогда добывать из прочитанной строки поля.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы