Подтвердить что ты не робот

Как использовать метод executeReader() для извлечения значения только одной ячейки

Мне нужно выполнить следующую команду и передать результат на метку. Я не знаю, как это сделать с помощью Reader. Кто-то может дать мне руку?

String sql = "SELECT * FROM learer WHERE learer.id = " + index;
SqlCommand cmd = new SqlCommand(sql,conn);
learerLabel.Text = (String) cmd.ExecuteReader();

Как вы можете видеть, я создаю инструкцию SQL и выполняю ее, но она не работает. Почему?

Консоль говорит:

Нельзя неявно использовать SqlDataReader для Строка...

Как я могу получить желаемые результаты как String, чтобы ярлык мог отображать его правильно.

4b9b3361

Ответ 1

Не рекомендуется использовать DataReader и Command.ExecuteReader для получения только значения из базы данных. Вместо этого вы должны использовать Command.ExecuteScalar следующим образом:

String sql = "SELECT ColumnNumber FROM learer WHERE learer.id = " + index;
SqlCommand cmd = new SqlCommand(sql,conn);
learerLabel.Text = (String) cmd.ExecuteScalar();

Здесь больше информации о подключении к базе данных и управлении данными.

Ответ 2

using (var conn = new SqlConnection(SomeConnectionString))
using (var cmd = conn.CreateCommand())
{
    conn.Open();
    cmd.CommandText = "SELECT * FROM learer WHERE id = @id";
    cmd.Parameters.AddWithValue("@id", index);
    using (var reader = cmd.ExecuteReader())
    {
        if (reader.Read())
        {
            learerLabel.Text = reader.GetString(reader.GetOrdinal("somecolumn"))
        }
    }
}

Ответ 3

ExecuteScalar() - это то, что вам нужно здесь