我将gridview绑定到sqldatasource。我的问题是,当我在select语句中使用没有where子句的sqldatasource时它工作正常,但是当我将它与where子句一起使用时,它在Query Builder测试和返回记录中工作正常,但在运行时不起作用。我使用 Sql Profiler 并看到当我使用 where 子句时查询未运行。我听说 .NET 由于 sql 注入而阻止使用 where 子句运行查询,但我不知道如何更正我的查询。我的 sql 数据源:
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:chargeDBConnectionString %>" SelectCommand="SELECT CARDNUMBER, VISITDATE, ACCNUMBER, ACTIONCODE FROM LOGTABLE WHERE (CARDNUMBER = @cardno OR @cardno IS NULL AND CARDNUMBER <> N'-' AND @ttype = 1 OR @ttype = 0) AND (VISITDATE >= @fdate AND VISITDATE <= @edate) AND (ACCNUMBER = @accno OR @accno IS NULL AND ACCNUMBER <> N'-' AND @ttype = 0 OR @ttype = 1) AND (ACTIONCODE = @actioncode OR @actioncode IS NULL)">
<SelectParameters>
<asp:FormParameter FormField="cardNo" Name="cardno" />
<asp:ControlParameter ControlID="ddlType" Name="ttype"
PropertyName="SelectedValue" />
<asp:FormParameter FormField="fromDate" Name="fdate" />
<asp:FormParameter FormField="toDate" Name="edate" />
<asp:FormParameter FormField="accNo" Name="accno" />
<asp:ControlParameter ControlID="ddltransname" Name="actioncode"
PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>