如何使用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获得所需的结果,以便标签可以正确显示。

建议不要使用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(); 

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

 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()代替。