如何使用executeReader()方法检索一个单元格的值

时间:2011-04-26 18:06:55

标签: c# asp.net sql ado.net

我需要执行以下命令并将结果传递给标签。我不知道怎么能用Reader做到这一点。有人可以帮我一把吗?

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

正如您所见,我创建了SQL语句并执行它,但它不起作用。为什么呢?

控制台说:

  

无法隐式SqlDataReader来   串...

如何以String形式获得所需的结果,以便标签可以正确显示。

4 个答案:

答案 0 :(得分:43)

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"))
        }
    }
}

答案 1 :(得分:26)

建议不要使用DataReaderCommand.ExecuteReader从数据库中获取一个值。相反,您应该使用Command.ExecuteScalar,如下所示:

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

Here是有关连接数据库和管理数据的更多信息。

答案 2 :(得分:2)

你需要

ExecuteScalar()

答案 3 :(得分:1)

Duplicate question基本上代表使用ExecuteScalar()