C# 如何在c中的sqldatasource会话参数中嵌入变量值#
我想询问如何在c#中的sqldatasource会话参数中嵌入变量值。这是mycode: default.aspx:C# 如何在c中的sqldatasource会话参数中嵌入变量值#,c#,C#,我想询问如何在c#中的sqldatasource会话参数中嵌入变量值。这是mycode: default.aspx: <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Ora2011 %>" ProviderName="<%$ ConnectionStrings:Ora2011.ProviderName %>"
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:Ora2011 %>"
ProviderName="<%$ ConnectionStrings:Ora2011.ProviderName %>"
SelectCommand="SELECT ID, CATEGORY_NAME FROM (:INVENT_CATEGORY)">
<SelectParameters>
<asp:SessionParameter Name="INVENT_CATEGORY" SessionField="INVENT_CATEGORY" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
当我运行这个程序时,我得到错误“无效的表名”。为什么我不能从会话参数将变量嵌入sqldatasource。感谢您的帮助您的问题与会话参数无关。。。问题是您试图通过一个参数指定表名——我很确定这是不受支持的。您必须自己在代码中构建查询字符串,才能完成您要做的事情 我不知道为什么要在会话中存储表名,但在代码中设置sql select的一个示例是 标记:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:Ora2011 %>"
ProviderName="<%$ ConnectionStrings:Ora2011.ProviderName %>"
</asp:SqlDataSource>
您必须确保表名的会话值只能包含有效值,否则存在SQL注入攻击的危险。谢谢您的回答。你能给我举个例子吗。
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:Ora2011 %>"
ProviderName="<%$ ConnectionStrings:Ora2011.ProviderName %>"
</asp:SqlDataSource>
protected void Page_Load(object sender, EventArgs e)
{
string table = (string)(Session["INVENT_CATEGORY"] ?? "V_INVENTORY");
SqlDataSource1.SelectCommand = "SELECT ID, CATEGORY_NAME FROM " + table;
}