asp.net初学者小白问题:查询数据库

初学asp.net,很多地方有疑问,想请各位牛人帮个忙,谢谢了:
我的前台代码为:

 <body>
    <form id="form1" runat="server">
    <div>

        <asp:Label ID="Label1" runat="server" Text=" "></asp:Label><p>
       <asp:Label ID="Label2" runat="server" Text=" "></asp:Label><p>
        <asp:Label ID="Label3" runat="server" Text=" "></asp:Label>
    </div>
    </form>
</body>



后台代码为:
 protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConString);
        con.Open();
        string a = Request.QueryString["name"];
        Label1.Text = a;
        Label2.Text = a.GetType().ToString();


        string str = "SELECT detailtalk FROM expert_viewpoint_detail WHERE name = '" + a + "'";
        SqlCommand cmd = new SqlCommand(str,con);
        SqlDataReader dr = cmd.ExecuteReader();
        if(dr.Read())
        {
            Label3.Text = dr[0].ToString();
        }
        else
        {
            Label3.Text = "False";
        }
        con.Close();

    }
结果网页显示:

expert1
System.String

False
我是想根据传递过来的a值查询到相关的数据并显示出来,这样的结果肯定有问题。

而把后台的 string str = "SELECT detailtalk FROM expert_viewpoint_detail WHERE name = '" + a + "'"; 改成 string str = "SELECT detailtalk FROM expert_viewpoint_detail WHERE name = '" + "expert1" + "'";

则结果网页显示为:
expert1
System.String

ok

这才是想要的结果

为什么会发生这样的问题?

初学ASP.NET的小白请各位高手赐教,感谢感谢!

string str = "SELECT detailtalk FROM expert_viewpoint_detail WHERE name = '" + a + "'";
你仔细想想C#转义 局部变量怎么弄!你这是JS写法 呵呵
string str =string.Format( "SELECT detailtalk FROM expert_viewpoint_detail WHERE name = {0}",a);
基础一定要扎实,你之所以这个位子出错是因为你把基础忘记了,抽空把基础在学习一遍相信你一定学的更好。

把sql 语句打印下,去数据库那边执行下,看看有没有错误

string a = Request.QueryString["name"].Trim();
这样就解决了

SqlDataReader Sdr = Cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Load(Sdr);

                    放在Datatable 里呢?然后在读取里面的值