从sql reader获取值c#

时间:2015-01-10 09:10:31

标签: c# sql

我有以下代码:

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"的确切价值。并将其分配给标签。请帮帮我。

2 个答案:

答案 0 :(得分:5)

首先,您的查询对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();
    }
}

答案 1 :(得分:0)

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

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;
    }
}