Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    483

    [JSP] problema con query select

    Ciao amici,
    ho un problema con una query.
    Siccome a me tocca fare una query del genere: s
    Query = "SELECT * FROM sciolti WHERE id="+id;
    può capitare che l'id 18 non c'è perchè è stato cancellato il record; qundi se faccio una query del genere: sQuery = "SELECT * FROM sciolti WHERE id=18, si incasina tutto.
    Esiste un modo per intercettare questo tipo di errore?
    Grazie mielle.

  2. #2
    Posta il codice che magari è più chiaro.

    Comunque, in generale, se utilizzi ResulSet come contenitore del risultato della query i metodo ResulSet.next(), ResulSet.first(), ResulSet.last(), ResulSet.relative(int) e ResulSet.absolute(int) oltre a permetterti di muoverti sul ResulSet, comunicano se l'operazione è riuscita tramite un ritorno booleano.

    Se vuoi sapare se un ResultSet è pieno, cioè se la tua query ha dato esiti positivi esegui il seguente codice:

    codice:
    .
    .
    .
    // Dopo aver fatto la query
    if(mioResulSet.next()) {
        // La query è piena ed è meglio riportare tutto allo stato base
        mioResulSet.beforeFirst();
    } else {
        System.out.println("Query vuota!!!!")
    }
    .
    .
    .
    Oppure puoi sfruttare le eccezioni. Un accesso ad un ResultSet vuoto, tipo un getString(), genera una java.sql.SQLException che puoi catturare.

    Tutto chiaro???

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    483
    tutto molto chiaro tranne una cosa. Cosa vuol dire questo? mioResulSet.beforeFirst();
    Cmq sei stato veramente gentilissimo.
    Grazie mille.

  4. #4
    il metodo beforeFisrt() sposta il cursore del ResultSet subito prima della prima riga

  5. #5
    Figurati!!!!

    Come dice stefano80super:
    beforeFisrt() sposta il cursore del ResultSet subito prima della prima riga
    il che vuol dire portare il ResulSet al suo stato iniziale dopo aver eseguito la query, in questo modo puoi utilizzare il ResultSet come fai già senza dover cambiare una riga di codice, mentre se non invocassi il beforeFisrt() perderesti la proma riga.

    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    483
    ma io non devo tornare allo stato iniziale.
    Il codice non posso postarlo perchè ce l'ho a casa, però io non faccio altro che un avanti ed indietro con due button.
    Incremento l'id di 1 oppure lo incremento in base al bottone cliccato.
    Cmq guardando il codice lo mofico in questo modo:
    codice:
    // Dopo aver fatto la query
    if(mioResulSet.next()) {
        // La query è piena ed è meglio riportare tutto allo stato base
        //quindi è tutto ok e mi carico le variabili
    } else {
    //a questo punto mi faccio ricaricare la pagina incrementando l'id di 1
    id = id+1;
    response.sendRedirect("miapagina.jsp?id="+id);
    Secondo me così va bene.
    Che ne dite?

  7. #7
    credo che eumene volesse indicarti il modo migliore per procedere poi ovviamente dipende da quello che devi fare, da quello che mi sembra probabilmente per te non è necessario riportare tutto allo stato iniziale.

    Forse però dovresti pensare di spostare la query e l'accesso al db fuori dalla pagina, dentro una classe


  8. #8
    I tuoi bottoni servono per sfogliare il ResulSet?

    Non comprendo perchè incrementi un id e fai un redirect se non trovi nulla nel ResultSet.

    Cmq se quello è il tuo obbiettivo va bene.

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Parlo da profano... ma, non sarebbe meglio se ti tirassi fuori un set di record invece che un record solo in modo che ad ogni pressione dei bottoni non devi rieseguire una query? next, previous, first, last, beforeFirst e afterLast dovrebbero bastarti...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    inoltre utilizzando questo metodo non riesci a capire quando hai superato l'ultimo record

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 © 2024 vBulletin Solutions, Inc. All rights reserved.