我需要执行以下命令并将结果传递给标签。我不知道怎么能用Reader做到这一点。有人可以帮我一把吗?
String sql = "SELECT * FROM learer WHERE learer.id = " + index;
SqlCommand cmd = new SqlCommand(sql,conn);
learerLabel.Text = (String) cmd.ExecuteReader();
正如您所见,我创建了SQL语句并执行它,但它不起作用。为什么呢?
控制台说:
无法隐式SqlDataReader来 串...
如何以String形式获得所需的结果,以便标签可以正确显示。
答案 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)
建议不要使用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();
Here是有关连接数据库和管理数据的更多信息。
答案 2 :(得分:2)
ExecuteScalar()
答案 3 :(得分:1)
Duplicate question基本上代表使用ExecuteScalar()
。