Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Mysql query con LIKE e parametro

    Salve a tutti,
    ho una pagina Asp.net con un sqldatasource che interroga una tabella di un DB Microsoft Sql in base ad un parametro:

    SelectCommand="SELECT [id], [indirizzo] FROM [tabellaEsempio] WHERE ([indirizzo] LIKE '%' + @indirizzo + '%')"

    e fin qui tutto ok, il problema nasce quando faccio la stessa cosa con MySql, premetto che ho riprodotto la tabella in Mysql, ho configurato Asp.net in modo da interfacciarmi al server di MySql, ho verificato facendo una normale query di select e tutto funziona.
    L'unico problema è che non riesco a far funzionare la stessa query e cioè se scrivo:

    SelectCommand="SELECT id, indirizzo FROM tabellaEsempio WHERE (indirizzo LIKE '%' + @indirizzo + '%')"

    Ottengo un errore di sintassi:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '+ 'parametro' + '%')' at line 1

    Probabilmente è un errore di sintassi, le ho provate tutte, levare i più, mettere i segni di percentuale in modo diverso etc. avete qualche suggerimento???


  2. #2

    altre prove

    se la scrivo così:

    SelectCommand="SELECT id, indirizzo FROM tabellaEsempio WHERE (indirizzo LIKE '%testoDiProva%')"

    e se elimino dal controllo Sqldatasource la dichiarazine del parametro:

    <SelectParameters>
    <asp:ControlParameter Name="indirizzo" ControlID="TextBoxIndirizzo" PropertyName="Text" />
    </SelectParameters>


    funziona regolarmente, il problema è che io devo fare la ricerca in base al parametro che viene valorizzato da un altro controllo (TextBoxIndirizzo)...

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    39
    I nomi dei parametri in mySql sono preceduti da '?' (punto interrogativo) e non da '@' (chiocciolina). Prova con:

    codice:
    SelectCommand="SELECT id, indirizzo FROM tabellaEsempio WHERE (indirizzo LIKE '%' + ?indirizzo + '%')"

  4. #4

    niente da fare

    no niente con il tuo suggerimento non funziona ma funziona con il CONCAT


    SelectCommand="SELECT id, indirizzo FROM tabellaEsempio WHERE (indirizzo LIKE CONCAT('%', @indirizzo,'%'))"

    Grazie comunque

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    39
    In effetti la stringa corretta è:

    Codice PHP:
    SelectCommand="SELECT id, indirizzo FROM tabellaEsempio WHERE (indirizzo LIKE %?indirizzo%)" 
    ma anche con il comando CONCAT funziona bene.

    Comunque a me, con la chiocciolina, mi da errore; utilizzi MySqlConnector?

  6. #6
    No neanche avevo già provato ma anche così mi da un errore di sintassi.


    Si uso il MySqlConnector ultima versione, scaricato di recente.
    L'ho installato ho inserito nel sqldatasourse il riferimento al provider:

    ProviderName="MySql.Data.MySqlClient"

    e non ho fatto nientaltro, anche se in teoria come da certi forum in rete avrei dovuto modificare anche il web.config ma funziona anche senza ulteriori modifiche.

    a te funziona il codice che mi hai suggerito?

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    39
    si, uso correntemente quella sintassi e non mi ha mai dato problemi
    Comunque, l'importante è che hai risolto il problema.

  8. #8
    scusa l'insistenza, perchè a me sinceramente sembra strana la cosa, ma quella sintassi la usi all'interno di un SqlDataSource o in un altro contesto?

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    39
    Uso MySqlParameter per le query che utilizzano nei dataset. Probabilmente è quella la differenza.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.