Visualizzazione dei risultati da 1 a 6 su 6

Discussione: JDBC/ODBC e query

  1. #1

    JDBC/ODBC e query

    Salve a tutti,
    sto riscontrando dei problemi nell'esecuzione di query con attributo LIKE mediante JDBC/ODBC.
    La query dovrebbe restituire un elenco di comuni (in una JTable) che iniziano con una determinata lettera. La stringa ke passo al driverJDBC e che restituisce errore è
    SELECT codice, comune, pro, cap FROM Comune WHERE codice LIKE '"+codcom_txf.getText().toUpperCase()+"*'";
    In un precedente post ho trovato la seguente risposta di Judge
    <<cmq mi ricordo che c'erano dei problemi col carattere "
    x cui nella stringa sql invece di usare " usavo # e poi dopo la composizione, facevo la replace di # in " nella stringa>> che non ho ben capito.
    Qualcuno potrebbe aiutarmi a capire dove c'è l'errore mediante un esempio o ricostruire interamente la query? Grazie mille, buon week end Ciao Ciao
    Mikele

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65
    io per fare la query con passaggio di parametri al db faccio cosi:

    codice:
    ResultSet rs = stmt.executeQuery("select count(*) as num FROM utente WHERE username='"+username+"';");

    e mi funziona...di più non so dirti..

  3. #3
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    non si settano mai i parametri di tipo stringa "appendendoli a mano" alla stringa di query.
    Esiste apposta il metodo .setString() di PreparedStatement, che permette di evitare qualsiasi inconveniente...
    Usate sempre la notazione parametrica (quella con i "?") nella stringa di query e settate i vari parametri coi metodi corretti.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65
    eppure spesso quel metodo mi dà mille problemi...sopratutto se, dopo aver fatto l'executeUpdate() mi serve che mi ritorni un valore == 1 se tutto è andato bene o == 0 se c'è stato un errore.

    Mi daresti una risposta "definitiva" a sto problema scrivendomi la sintassi "tipo"?

  5. #5
    Ciao,
    dopo mille tentativi ho risolto il problema in questo modo.
    Ho impostato la query in questo modo
    SELECT <campi> FROM <nometabella> WHERE <campo> LIKE '"+<variablie>+"%'";
    Nel caso mio diventa
    SELECT * FROM Comune WHERE codice LIKE '"+cofcom_txf.getText().toUpperCase()+"%'";
    da passare al metodo executeQuery.
    Ciao
    Mikele

  6. #6
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    Mi daresti una risposta "definitiva" a sto problema scrivendomi la sintassi "tipo"?
    e' sempre la stesa... se si tratta di una query di update:
    codice:
    Connection conn = ......;
    String querySQL = "update utenti set username='pippo' where username=?";
    PreparedStatement ps = conn.prepareStatement(querySQL);
    ps.setString(1, "paperino");
    int count = ps.executeUpdate();
    rinomina "paperino" in "pippo"

    mi sembra semplice e consigliabile usare sempre i parametri e i metodi per settare stringhe, numeri, timestamp e tutto quanto... sono fatti apposta per non dover gestire gli escape dei caratteri e piu' o meno qualsiasi menata di conversione di formato

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.