如何使用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 …
如何以Stringforms获得所需的结果,以便标签可以正确显示。
建议不要使用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();
以下是有关连接数据库和管理数据的更多信息。
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")) } } }
ExecuteScalar()
就是你需要的
重复的问题 ,基本上说使用ExecuteScalar()
代替。