在ASPX文件中使用QueryString

时间:2013-08-12 20:56:01

标签: c# asp.net

我正在尝试在ASPX文件中使用sql命令来捕获查询值但有一些语法问题。一切正常但当我尝试通过查询字符串过滤它然后我得到语法问题。如何使用查询字符串过滤我的查询?这是我的代码:

<asp:SqlDataSource ID="DD_AI_DS" runat="server" 
              ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
              SelectCommand="SELECT DISTINCT [MyField] FROM [MyTable] where ID = '"+request.querystring[ID]+"' order by ID asc" >
          </asp:SqlDataSource>

2 个答案:

答案 0 :(得分:4)

请改为尝试:

<asp:SqlDataSource ID="DD_AI_DS" runat="server" 
   ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
   SelectCommand="SELECT DISTINCT [MyField] FROM [MyTable] where ID = @ID order by ID asc" >
   <SelectParameters>
    <asp:QueryStringParameter Name="ID" QueryStringField="Post_ID" Type="String" />
   </SelectParameters>
</asp:SqlDataSource>

顺便说一句,如果您编写的代码确实有效,那么它会通过允许sql注入在您的网站中创建一个安全漏洞。我会阅读这个主题,这样你就不会不小心让你的网站对黑客开放。

答案 1 :(得分:0)

您还可以在代码隐藏中设置SqlDataSource属性,如下所示:

DD_AI_DS.SelectCommand = "SELECT DISTINCT [MyField] FROM [MyTable] where ID = '"+ Request.QueryString[ID] + "' order by ID asc";
DD_AI_DS.Select(DataSourceSelectArguments.Empty);

注意:这为您提供了Visual Studio中IntelliSense的支持,并在编译时捕获了一些问题。