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

sfr*_*frj 29 c# sql asp.net ado.net

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

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

正如您所看到的,我创建了SQL语句并执行它,但它不起作用.为什么?

控制台说:

不能隐式SqlDataReader到String ...

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

Dar*_*rov 46

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"))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您向我展示如何使用ExecuteReader()而不是标量,如所提出的问题 (2认同)

Akr*_*hda 27

建议不要使用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();
Run Code Online (Sandbox Code Playgroud)

以下是有关连接数据库和管理数据的更多信息.