我正在尝试在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>
答案 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的支持,并在编译时捕获了一些问题。