none
使用SqlDataSource來動態調整資料表 RRS feed

  • 問題

  • <asp:SqlDataSource ID="sqlDS1" runat="server"
            ConnectionString='<%$ connectionStrings:ConnectionString1 %>'
            SelectCommand="SELECT * FROM @TB ">
            <SelectParameters>
                <asp:Parameter Name="TB" DefaultValue="Table1" />
            </SelectParameters>
    </asp:SqlDataSource>

    如上方程式碼
    使用SqlDataSource動態調整資料表
    所以SelectCommand結果應該為"SELECT * FROM Table1"

    可是確出現錯誤訊息 '必須宣告資料表變數@TB'
    我嘗試同樣方法但參數放在Where子句卻可正常運行
    是否Asp.NET的SqlDataSource元件還不支援態調整資料表??
    2010年1月20日 上午 10:15

解答

  • 資料表不可以帶參數 ... 也就是資料表名稱不可以是參數。
    至少在目前已知的情況下是不行的。
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    • 已標示為解答 小小郭 2010年1月20日 下午 04:07
    2010年1月20日 上午 10:29
    版主
  • HI,

    用StorePorcedure的方式試看看:
    http://social.msdn.microsoft.com/Forums/zh-TW/240/thread/09794173-c907-401b-b87d-a8a287713dcc


    歡迎參加MSDN&TechNet技術社群交流活動 (時間:1/9(六) 11:30-17:30(台中金典),1/16(六) 11:30-17:30(台北微軟),1/23(六) 11:30-17:30(高雄微軟辦公室)),
    MSDN老爹TechNet小妹將盛裝出席, 要一睹風采, 就趕快報名!!
    • 已標示為解答 小小郭 2010年1月21日 上午 01:01
    2010年1月20日 上午 10:29
  • <asp:SqlDataSource ID="sqlDS1" runat="server"
            ConnectionString='<%$ connectionStrings:ConnectionString1 %>'
            SelectCommand="SELECT * FROM @TB ">
            <SelectParameters>
                <asp:Parameter Name="TB" DefaultValue="Table1" />
            </SelectParameters>
    </asp:SqlDataSource>

    如上方程式碼
    使用SqlDataSource動態調整資料表
    所以SelectCommand結果應該為"SELECT * FROM Table1"

    可是確出現錯誤訊息 '必須宣告資料表變數@TB'
    我嘗試同樣方法但參數放在Where子句卻可正常運行
    是否Asp.NET的SqlDataSource元件還不支援態調整資料表??
    改成用exec來執行動態SQL就可以了,不過也是覺得用Stored Procedure可能會比較好,供您參考。

    <asp:SqlDataSource ID="sqlDS1" runat="server"
            ConnectionString='<%$ connectionStrings:ConnectionString1 %>'
            SelectCommand="exec ('SELECT * FROM' + @TB) ">
            <SelectParameters>
                <asp:Parameter Name="TB" DefaultValue="Table1" />
            </SelectParameters>
    </asp:SqlDataSource>

    開發環境:
    OS:Windows 7 Enterprise
    IDE:VS 2008 Profession SP1
    .NET Framework: 3.5 SP1
    DBMS:SQL Server 2008 SP1
    • 已標示為解答 小小郭 2010年1月20日 下午 04:08
    2010年1月20日 下午 12:59

所有回覆

  • 資料表不可以帶參數 ... 也就是資料表名稱不可以是參數。
    至少在目前已知的情況下是不行的。
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    • 已標示為解答 小小郭 2010年1月20日 下午 04:07
    2010年1月20日 上午 10:29
    版主
  • HI,

    用StorePorcedure的方式試看看:
    http://social.msdn.microsoft.com/Forums/zh-TW/240/thread/09794173-c907-401b-b87d-a8a287713dcc


    歡迎參加MSDN&TechNet技術社群交流活動 (時間:1/9(六) 11:30-17:30(台中金典),1/16(六) 11:30-17:30(台北微軟),1/23(六) 11:30-17:30(高雄微軟辦公室)),
    MSDN老爹TechNet小妹將盛裝出席, 要一睹風采, 就趕快報名!!
    • 已標示為解答 小小郭 2010年1月21日 上午 01:01
    2010年1月20日 上午 10:29
  • <asp:SqlDataSource ID="sqlDS1" runat="server"
            ConnectionString='<%$ connectionStrings:ConnectionString1 %>'
            SelectCommand="SELECT * FROM @TB ">
            <SelectParameters>
                <asp:Parameter Name="TB" DefaultValue="Table1" />
            </SelectParameters>
    </asp:SqlDataSource>

    如上方程式碼
    使用SqlDataSource動態調整資料表
    所以SelectCommand結果應該為"SELECT * FROM Table1"

    可是確出現錯誤訊息 '必須宣告資料表變數@TB'
    我嘗試同樣方法但參數放在Where子句卻可正常運行
    是否Asp.NET的SqlDataSource元件還不支援態調整資料表??
    改成用exec來執行動態SQL就可以了,不過也是覺得用Stored Procedure可能會比較好,供您參考。

    <asp:SqlDataSource ID="sqlDS1" runat="server"
            ConnectionString='<%$ connectionStrings:ConnectionString1 %>'
            SelectCommand="exec ('SELECT * FROM' + @TB) ">
            <SelectParameters>
                <asp:Parameter Name="TB" DefaultValue="Table1" />
            </SelectParameters>
    </asp:SqlDataSource>

    開發環境:
    OS:Windows 7 Enterprise
    IDE:VS 2008 Profession SP1
    .NET Framework: 3.5 SP1
    DBMS:SQL Server 2008 SP1
    • 已標示為解答 小小郭 2010年1月20日 下午 04:08
    2010年1月20日 下午 12:59