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

    esecuzione query: caccia all'errore

    vi giuro non capisco: ho sempre usato questo modo, ha sempre funzionato ma questa volta non mi entra nemmeno nel ciclo while(rs.next()).

    .......

    Statement s = con.createStatement();
    String query = "select * from agenzie where nom_sed_ds like '*"+name+"*'";


    System.out.println(query);
    s.execute(query);
    ResultSet rs = s.getResultSet();
    System.out.println(rs);

    if (rs != null) {// if rs == null, then there is no ResultSet to view
    while ( rs.next() ){ // this will step through our data row-by-row

    System.out.println("rs");
    agenzie.add(rs.getString(3));
    agenzie.add(rs.getString(6));
    }
    }

    //solo per vedere cosa tiro fuori -- sarà da cancellare
    for(int i=0;i<agenzie.size();i=i+2){
    System.out.println(agenzie.get(i));
    System.out.println(agenzie.get(i+1));
    }


    come si vede mi faccio stampare la query: ad esempio, inserendo nella textbox 'nicola' la query che ottengo è la seguente

    select * from agenzie where nom_sed_ds like '*nicola*'

    giusta no?? il db in questione è un db access....

    :master: non riesco proprio a capire cosa potrebbe essere sbagliato.

    suggerimenti?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Penso che ti ci voglia una preparedstatement e se non ricordo male, la wildcard per LIKE per "*" in SQL è il %

    Quindi dovrebbe essere qualcosa del genere:

    codice:
    PreparedStatement findStmt = con.prepareStatement("SELECT * FROM agenzie wWHERE nom_sed_ds LIKE ?");
    
    findStmt.setString(1, "%"+name+"%");
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    1)Hai provato ad eseguire la query direttamente su Access?

    2) Anzicchè fare

    s.execute(query);
    ResultSet rs = s.getResultSet();

    prova direttamente con

    ResultSet rs = s.executeQuery(query);

    3) Non è che il tuo valore inserito nel like ha degli apici?
    Al mio segnale... scatenate l'inferno!

  4. #4
    si.... e restituisce i risultati corretti, per questo motivo non ho avuto dubbi sull'esattezza dei caratteri speciali.


    tornando al discorso prepared statement......

    a questo punto come faccio l'execute e il get resultset?

  5. #5
    Ho modifcato il mio post precedente
    Al mio segnale... scatenate l'inferno!

  6. #6
    well :master:
    ho messo direttamente ResultSet rs = s.executeQuery(query); ma ne la query ne il risultato (ovvero non viene fuori niente) cambia.

    come dicevo prima la query è la seguente , e da access funziona

    select * from agenzie where nom_sed_ds like '*nicola*'

    gli apici sono necessari... senza apici la query non va

    vi do sempre da lavorare eh?? ma sto imparando un sacco di cose

  7. #7
    Prova a sostituire * con % ... tramite Access è necessario * mentre magari tramite java è necessario %... Non uso access com db, quindi ho sempre usato %.
    Al mio segnale... scatenate l'inferno!

  8. #8
    ... ma quante ne sai!!!!!

    buono a sapersi....

    il % come l'sql di oracle...... :memorizzato:


    grazie ancora


  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    pure in MySQL... infatti mi scuso in partenza, non avevo letto bene che stavi su DB Access.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.