2013-10-02 1 views
0

Je travaille actuellement sur un système de point de vente en tant que projet pour mes études. Nous construisons l'application dans les Winforms VB en utilisant Visual Studio 2012.Requête MySQL - Recherche en utilisant des caractères génériques à l'avant et à l'arrière et un paramètre d'entrée. Visual Studio 2012 - VB.NET

J'ai installé MySQL pour Visual Studio et j'ai créé un datasource/connection/dataset via le panneau de sources de données dans VS.

J'essaie actuellement de faire une requête TableAdapter à l'aide de VS Query Builder qui recherche un nom de produit mais en utilisant la norme WHERE (ProductName = @inputParamName) vous avez besoin d'une correspondance de 100% dans @inputParamName pour afficher les données respectives .

J'ai essayé d'utiliser WHERE (ProductName LIKE '%' + @inputParamName + '%') mais cela me donne une erreur MySQL.

Si quelqu'un pouvait m'aider, ce serait grandement apprécié.

Merci

Répondre

0

OK, je modifié ma réponse à utiliser une approche différente. Vous pouvez faire ce qui suit. Lorsque vous créez un SqlDataSource dans VS, il ajoute la SelectCommand dans l'aspx. Réglez la commande à rien et ajouter un SelectParameter, comme ceci:

<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> 

maintenant dans le code derrière, vous pouvez changer SelectCommand et passer un param comme ceci:

  { 
     // 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 + "%'"; 

     } 

Vous devrez tester la valeur "Textbox1.Text" contre SQL Injection. Regex est bon pour ça.

+0

Salut, malheureusement mon expérience avec MySQL est plutôt limitée. Par conséquent, la procédure de procédure stockée semble un peu complexe. J'aurais préféré utiliser T-SQL/MSSQL car j'ai plus d'expérience avec ça mais mon groupe n'a qu'un serveur MySQL à notre disposition. Pouvez-vous élaborer plus sur l'échappement en utilisant \ s'il vous plaît? Merci pour votre réponse. –

+0

Merci pour votre réponse révisée. Je n'ai toujours pas trié mais cette méthode semble beaucoup plus facile et je l'implémenterai quand je revisiterai la fonction de recherche. –

Questions connexes