0

私は現在、私の研究のためのプロジェクトとして POS システムに取り組んでいます。Visual Studio 2012 を使用して VB winforms でアプリケーションを構築しています。

MySQL for Visual Studio をインストールし、VS のデータ ソース パネルからデータソース/接続/データセットを設定しました。

現在、製品名を検索する VS Query Builder を使用して TableAdapter クエリを作成しようとしていますが、標準の WHERE (ProductName = @inputParamName) を使用して、それぞれのデータを表示するには @inputParamName で 100% 一致する必要があります。

WHERE (ProductName LIKE '%' + @inputParamName + '%') を使用してみましたが、MySQL エラーが発生します。

誰かが私を助けることができれば、それは大歓迎です。

ありがとう

4

1 に答える 1

0

OK、別のアプローチを使用するように回答を編集しました。次のことができます。VS で SqlDataSource を作成すると、aspx に SelectCommand が追加されます。コマンドを何も設定せず、次のように SelectParameter を追加します。

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="">
    <SelectParameters>
        <asp:Parameter DefaultValue="" Name="param1" Type="String" />
    </SelectParameters>
    </asp:SqlDataSource>

コード ビハインドでは、SelectCommand を変更して、次のようなパラメーターを渡すことができます。

         {
        // Run this on a click or selected index change
        string m_param = "2012";  //this would be something like Textbox1.Text

        this.SqlDataSource1.SelectParameters[0].DefaultValue = m_param;
        this.SqlDataSource1.SelectCommand = "SELECT ID, FILENAME FROM drmc.checksum WHERE FILENAME LIKE '%" + this.SqlDataSource1.SelectParameters[0].DefaultValue + "%'";

         } 

SQL インジェクションに対して "Textbox1.Text" 値をテストする必要があります。正規表現はこれに適しています。

于 2013-10-02T07:04:07.220 に答える