在 SqlDataSource C# asp.net 中参数化 from 语句

本文关键字:参数 from 语句 net SqlDataSource asp | 更新日期: 2023-09-27 18:30:34

我正在尝试参数化asp:SqlDatasource Select Command的from语句。我当前的命令是硬编码的:

<asp:SqlDataSource ID="sdsSPs" runat="server"
    ConnectionString="<%$ ConnectionStrings:AAPs_DevConnectionString %>" 
    SelectCommand="select SPECIFIC_NAME from WIN_Dev.INFORMATION_SCHEMA.ROUTINES where ROUTINE_TYPE = 'Procedure'">
</asp:SqlDataSource>

但是我正在寻找更像这样的东西:

<asp:SqlDataSource ID="sdsSPs" runat="server"
        ConnectionString="<%$ ConnectionStrings:AAPs_DevConnectionString %>" 
        SelectCommand="select SPECIFIC_NAME from @Path where ROUTINE_TYPE = 'Procedure'">
        <SelectParameters>
            <asp:ControlParameter ControlID="lblDB" PropertyName="text" Name="Path" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>

或者更可取的是这样的东西:

<asp:SqlDataSource ID="sdsSPs" runat="server"
        ConnectionString="<%$ ConnectionStrings:AAPs_DevConnectionString %>" 
        SelectCommand="select SPECIFIC_NAME from @Path.INFORMATION_SCHEMA.ROUTINES where ROUTINE_TYPE = 'Procedure'">
        <SelectParameters>
            <asp:ControlParameter ControlID="lblDB" PropertyName="text" Name="Path" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>

所有这些尝试都失败了。我无法提前知道数据库是什么,因为用户可以选择它。有没有办法做到这一点?如果是这样,那是什么?感谢您的帮助!

在 SqlDataSource C# asp.net 中参数化 from 语句

您可能需要编写动态查询/过程以满足您的要求,

Create Proc Get_From_Dynamic_Table
@tablename varchar(50)
as
begin
declare @sqlQuery nvarchar(100)
Set @sqlQuery = 'Select * from '+@tablename
exec sp_executesql @sqlQuery
end

注意:代码未测试。