从sql reader获取值c#

我有以下代码:

SqlConnection c = new SqlConnection("Data Source=localhost\\sqlexpress;Initial Catalog=BookStoreDataBase1;Integrated Security=True;Pooling=False;"); c.Open(); string raf = string.Format("Select Id from Customer WHERE email='{0}'", DropDownList1.SelectedItem.Text); SqlCommand comm2 = new SqlCommand(raf, c); SqlDataReader r = comm2.ExecuteReader(); 

对象r现在具有查询的值,该行包含从电子邮件等于下拉列表中的随机值的Id。

我想要的是得到“Id”的确切值并将其分配给标签。 请帮我。

首先,您的查询对SQL Injection attack是开放的,所以改变它如下: –

 string raf = "Select Id from Customer WHERE email= @Email"; SqlCommand comm2 = new SqlCommand(raf, c); cmoo2.Parameters.Add("@Email",SqlDbType.NVarchar,20).Value = DropDownList1.SelectedItem.Text; 

你只获取一个值,所以可以这样使用ExecuteScalar : –

 labelid.Text= cmoo2.ExecuteScalar.ToString(); 

但是如果你想使用SqlDataReader对象,那么它会在你调用Read方法时返回值: –

 using(SqlDataReader reader= cmoo2.ExecuteReader()) { while (reader.Read()) { labelid.Text= reader["Id"].ToString(); } } 

有关此主题的堆栈溢出中已有很多示例,您可以参考任何答案或尝试此操作

 using(SqlDataReader r= cmd.ExecuteReader()) { while (r.Read()) { var myString = r.GetString(0); //The 0 stands for "the 0'th column", so the first column of the result. labelid.Text=myString; } }