2017年7月21日 星期五

[研究] [ASP.NET] 組字串之 SQL 敘述有 like 關鍵字時,改寫為參數化查詢 (Parameterized SQL) 之寫法

[研究] [ASP.NET] [C#] [WebForm] 組字串之 SQL 敘述有 like 關鍵字時,改寫為參數化查詢 (Parameterized SQL) 之寫法

2017-07-21、2023-01-17

Default.aspx 中 T-SQL 

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
        SelectCommand="SELECT * FROM [Danger112Product] WHERE ( ([ProductFullNameCht]=@TextBoxQuery OR [ProductKeyNameCht] like N'%' + @TextBoxQuery + '%' OR [ProductFullNameEn]=@TextBoxQuery OR [ProductKeyNameEn] like N'%' + @TextBoxQuery + '%') AND @TextBoxQuery<>'')"
        >
        <SelectParameters>
            <asp:ControlParameter ControlID="TextBox_Query" Name="TextBoxQuery" PropertyName="Text" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>



組字串之 SQL 敘述有 like 關鍵字時
SqlDataSource1.SelectCommand = SqlDataSource1.SelectCommand + @" AND [KeyWord] like N'%" + TextBox_KeyWord.Text.Trim() + "%'";

改寫為參數化查詢 (Parameterized SQL) 之寫法
SqlDataSource1.SelectCommand = SqlDataSource1.SelectCommand + @" AND [KeyWord] like N'%' + @KeyWord +'%' ";

SqlDataSource1.SelectParameters.Clear();

SqlDataSource1.SelectParameters.Add("KeyWord", TypeCode.String, TextBox_KeyWord.Text.Trim());



其中這句
SqlDataSource1.SelectParameters.Add("KeyWord", TypeCode.String, TextBox_KeyWord.Text.Trim());

可改寫為
SqlDataSource_Jiguan.SelectParameters.Add("KeyWord", System.Data.DbType.String, TextBox_KeyWord.Text.Trim());

或 (字串可以省略型態指定)
SqlDataSource_Jiguan.SelectParameters.Add("KeyWord", TextBox_KeyWord.Text.Trim());

(完)

沒有留言:

張貼留言