日期:2014-05-20  浏览次数:20304 次

ASP.NET(C#)后台可以读取传来的数据,但前台SQL无法使用

ASP向ASP.NET(C#)传来的参数是
TEST.ASPX?name=%sdE1%DCW2....

在ASP.NET后台可以正确读出传来的NAME,句子如下
string department=HttpUtility.UrlDecode(Request.QueryString["name"],System.Text.Encoding.Default);
  Label1.Text = name;

ASP.NET前台写出了SQL查询语句
<asp:SqlDataSource ID="SqlDataSource1" runat="server"  
  ConnectionString="<%$ ConnectionStrings:sqlConnectionString %>"  
  SelectCommand="SELECT * FROM [Table] WHERE [name] = @name"
   
  <SelectParameters>
  <asp:QueryStringParameter Name="name" QueryStringField="name" Type="String" />
  </SelectParameters>
</asp:SqlDataSource>

但是好像WHERE后面的句子有问题,查不到数据,请高手开导一下,谢谢

------解决方案--------------------


//我好像忘记了拼凑SQL查询语句时,如果查询条件中有列是字符串或日期类型的话,需要加上单引号了

this.SqlDataSource1.SelectCommand="SELECT * FROM [Table] WHERE [name] = "+HttpUtility.UrlDecode(Request.QueryString["name"],System.Text.Encoding.Default);

换成
this.SqlDataSource1.SelectCommand="SELECT * FROM [Table] WHERE [name] = "+"'"+HttpUtility.UrlDecode(Request.QueryString["name"],System.Text.Encoding.Default)+"'";


//我这样写可能你看得清楚一些

this.SqlDataSource1.SelectCommand=string.Format("SELECT * FROM [Table] WHERE [name] = '{0}'",HttpUtility.UrlDecode(Request.QueryString["name"],System.Text.Encoding.Default));//{0}是一个占位符,拼凑内容,用这个官方的方法比较方便