Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310

    gestire risultati interrogazione

    Salve,
    ho creato una classe per la connessione ad un db sql server, provo a fare una interrogazione in questo modo
    codice:
    try {
                String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
                String serverName = "00.00.00.00";
                String portNumber = "1028";
                String mydatabase = serverName + ":" + portNumber;
                String url = "jdbc:sqlserver:// " + mydatabase + ";" + "databaseName=prova";
                String username = "admin";
                String password = "admin";
                Class.forName(driverName);
                connection = DriverManager.getConnection(url, username, password);
                Statement st = connection.createStatement();
                ResultSet rs = st.executeQuery("select * from persone where nome = 'xxxxx'");
                Persona p = new Persona();
                p.setNome(rs.getString("nome"));
                p.setCognome(rs.getString("cognome"));
                p.setEta(rs.getInt("eta"));
                
                System.out.println(rs.getString("cognome"));
    
    
    
            } catch (ClassNotFoundException e) {
                System.out.println("Could not find the database driver");
            } catch (SQLException e) {
                System.out.println("--> " + e);
            }
    
        }
    quando devo poi gestire il resutlset ho il seguente errore:
    Errore : com.microsoft.sqlserver.jdbc.SQLServerException: Il set di risultati non ha una riga corrente.
    mi potete aiutare grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327

    Moderazione

    Linguaggio Java --> Forum "Java".

    Sposto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Ad ogni modo: non ammazzare le eccezioni. Tu stai gestendo solamente 2 tipi di eccezione... tutte le altre non vengono gestite.

    Usa il printStackTrace():

    codice:
    } catch (ClassNotFoundException e) {
                System.out.println("Could not find the database driver");
                e.printStackTrace();
            } catch (SQLException e) {
                System.out.println("--> " + e);
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
    per visualizzare lo stack delle eccezioni, in modo da capire chi le solleva e perchè.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310
    Ciao, mi scuso per aver sbagliato sezione pensavo potesse andare bene anche quella e grazie mille per aver risposto.
    Se non ho capito male mi hai suggerito di non usare una System.out.println("bla bla"); ma di usare un PrintStackeTrace, e quasto mi va bene... ma il mio problema in origine era legatao ad una eccezione particolare SQLException-->stato del cursore non valido, quindi volevo sapere quale potesse essere il problema....
    scusate per l'ignoranza...
    buona giornata

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Il mio suggerimento di usare printStackTrace() non era solo per tua comodità... ma anche per fornire a noi il trace generato e capire quale possa essere la causa.
    Non avevi specificato che il messaggio era "stato del cursore non valido".. già questo ci dice qualcosa di più.

    Ad ogni modo, guardando il tuo codice ho appena notato una cosa: tu esegui la query ed ottieni il ResultSet... e questo va bene.
    Il problema è che cerchi immediatamente di prendere il valore del campo "nome" senza esserti prima posizionato sul primo record del resultset.

    Quando ottieni un ResultSet, esso è posizionato prima del primo record.
    Devi eseguire almeno una "next()" per posizionarti sul primo record.

    E, ovviamente, dovrai controllare che la next() non restituisca "false", che vuol dire che il ResultSet è vuoto.

    codice:
    ResultSet rs = st.executeQuery("select * from persone where nome = 'xxxxx'");
    if ( rs.next() ) { 
       Persona p = new Persona();
       p.setNome(rs.getString("nome"));
       ...
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.