Errore database: nomecolonna was not found in this ResultSet

di il
38 risposte

38 Risposte - Pagina 2

  • Re: Errore database: nomecolonna was not found in this ResultSet

    Scusa la domanda banale;
    ma sei sicura di star eseguendo codice aggiornato sul giusto database ?
    Il debug da eclipse lo usi ?

    HTH
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Il fatto si fa ancora più strano.

    Puoi fare un altro test? Invece di utilizzare il PreparedStatement utilizza uno Statement semplice, qualcosa del tipo
    
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT ... FROM... WHERE family_id = " + f.getId() );
    
    Comunque anche a me sorge il dubbio che forse hai fatto un po di confusione sulla connessione col giusto database...


    Controlla un po attraverso questo pezzo di codice se è tutto giusto
    
    ResultSet rs = conn.getMetaData().getSchemas(); //o getCatalogs() in base al tuo driver jdbc
    while(rs.next()) {
       System.out.println(rs.getString(1));
    }
    
  • Re: Errore database: nomecolonna was not found in this ResultSet

    sspintux ha scritto:


    Scusa la domanda banale;
    ma sei sicura di star eseguendo codice aggiornato sul giusto database ?
    Il debug da eclipse lo usi ?

    HTH
    Sicurissima, ho controllato giusto ieri con il mio relatore perchè ho avuto problemi di connessione ma il codice lo sto eseguendo sul giusto database e si sto usando il debug da eclipse. Ma secondo eclipse risulta tutto corretto.
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Messi1D ha scritto:


    Okay allora il tuo commento è stato molto utile perchè ho scoperto che la colonna user in realtà si chiama "current_user" anche se nel database non risulta solo che ora mi esce un altro tipo di errore ovvero questo qui "Eccezione instanziazione 1 f.getGroup().add()Bad value for type int : auditel", sempre nello stesso punto di prima.
    Perchè il type int è sbagliato? E poi non capisco a che colonna si riferisce perchè non ho una colona chiamata auditel
    Messi1D, le questioni sul database devi saperle e verificarle tu, noi qui sul forum non possiamo avere evidenza di tutto quello che stai facendo e hai a disposizione. Non hai nemmeno precisato quale DBMS stai usando (MySQL? PostgreSQL? Oracle DB? ...), né se il database è sulla tua macchina o un altro host.
    Le query comunque, prima di usarle da Java, vanno provate "a mano" sul database tramite un apposito client a linea di comando o (meglio) "grafico". Se già lì non funzionassero ... c'è poco/nulla da fare lato Java!
  • Re: Errore database: nomecolonna was not found in this ResultSet

    andbin ha scritto:


    Messi1D ha scritto:


    Okay allora il tuo commento è stato molto utile perchè ho scoperto che la colonna user in realtà si chiama "current_user" anche se nel database non risulta solo che ora mi esce un altro tipo di errore ovvero questo qui "Eccezione instanziazione 1 f.getGroup().add()Bad value for type int : auditel", sempre nello stesso punto di prima.
    Perchè il type int è sbagliato? E poi non capisco a che colonna si riferisce perchè non ho una colona chiamata auditel
    Messi1D, le questioni sul database devi saperle e verificarle tu, noi qui sul forum non possiamo avere evidenza di tutto quello che stai facendo e hai a disposizione. Non hai nemmeno precisato quale DBMS stai usando (MySQL? PostgreSQL? Oracle DB? ...), né se il database è sulla tua macchina o un altro host.
    Le query comunque, prima di usarle da Java, vanno provate "a mano" sul database tramite un apposito client a linea di comando o (meglio) "grafico". Se già lì non funzionassero ... c'è poco/nulla da fare lato Java!
    Il database è un postgreSQL e si trova su un server.
    E per le query invece le ho già provate "a mano" sul database non ti preoccupare.
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Messi1D ha scritto:


    sspintux ha scritto:


    Scusa la domanda banale;
    ma sei sicura di star eseguendo codice aggiornato sul giusto database ?
    Il debug da eclipse lo usi ?

    HTH
    Sicurissima, ... si sto usando il debug da eclipse
    allora è il mistero della fogna otturata: qualcuno l'ha fatta grossa ma non si sa chi

    per scrupolo potresti eseguire una pulizia della soluzione ma putroppo non ricordo dove sta nel menù di eclipse

    HTH
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Sh3dir ha scritto:


    Il fatto si fa ancora più strano.

    Puoi fare un altro test? Invece di utilizzare il PreparedStatement utilizza uno Statement semplice, qualcosa del tipo
    
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT ... FROM... WHERE family_id = " + f.getId() );
    
    Comunque anche a me sorge il dubbio che forse hai fatto un po di confusione sulla connessione col giusto database...


    Controlla un po attraverso questo pezzo di codice se è tutto giusto
    
    ResultSet rs = conn.getMetaData().getSchemas(); //o getCatalogs() in base al tuo driver jdbc
    while(rs.next()) {
       System.out.println(rs.getString(1));
    }
    
    Ho provato ad usare Statement invece che PreparedStatement ma niente continua a darmi lo stesso errore.
    Il database è quello giusto anche perchè prima di questa parte di codice ho aggiunto due colonne a una tabella e me le ha aggiunte senza problemi.
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Forse ho un'idea di dove sta un altro errore ma non so ditemi voi:
    //stringa data and ora
    							String dataOraStart = rs_G.getString("starttime"); //format 'yyyy-mm-dd hh:ms:ss'
    							String dataOraFine = rs_G.getString("endtime"); //format 'yyyy-mm-dd hh:ms:ss'
    
    							try {
    
    								//ottengo data inizio dalla stringa
    								int yyS = Integer.parseInt(dataOraStart.substring(0,4));
    								int mmS = Integer.parseInt(dataOraStart.substring(5,7));
    								int ddS = Integer.parseInt(dataOraStart.substring(8,10));
    								//quindi, LocalDate
    								LocalDate dS = LocalDate.of(yyS, mmS, ddS);
    
    								//ottengo ora inizio dalla stringa
    								int hhS = Integer.parseInt(dataOraStart.substring(11,13));
    								int msS = Integer.parseInt(dataOraStart.substring(14,16));
    								int ssS = Integer.parseInt(dataOraStart.substring(17,19));
    								//quindi, LocalTime
    								LocalTime hS = LocalTime.of(hhS, msS, ssS);
    
    								//ottengo data di fine dalla stringa
    								int yyE = Integer.parseInt(dataOraFine.substring(0,4));
    								int mmE = Integer.parseInt(dataOraFine.substring(5,7));
    								int ddE = Integer.parseInt(dataOraFine.substring(8,10));
    								//quindi, LocalDate
    								LocalDate dE = LocalDate.of(yyE, mmE, ddE);
    
    								//ottengo ora di fine dalla stringa
    								int hhE = Integer.parseInt(dataOraFine.substring(11,13));
    								int msE = Integer.parseInt(dataOraFine.substring(14,16));
    								int ssE = Integer.parseInt(dataOraFine.substring(17,19));
    								//quindi, LocalTime
    								LocalTime hE = LocalTime.of(hhE, msE, ssE);
    Starttime e Endtime sono dei Timestamp quindi forse dovrei mettere getTimestamp?
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Scusa ma personalmente mi sto peredendo:
    l'errore originale sul nome di colonna "user" che nel resulset risulta "current_user" persiste ancora ?

    se si prova a qualificare la tabella nella query anche con lo schema
    perchè è impossibile che a pari condizioni
    la query eseguita direttamente sul db ti restituisca cose diverse se eseguita da codice java

    HTH
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Messi1D ha scritto:


    								int yyS = Integer.parseInt(dataOraStart.substring(0,4));
    								int mmS = Integer.parseInt(dataOraStart.substring(5,7));
    								int ddS = Integer.parseInt(dataOraStart.substring(8,10));
    No, non si fanno questi substring, che sono molto brutti e error-prone.

    Messi1D ha scritto:


    Starttime e Endtime sono dei Timestamp quindi forse dovrei mettere getTimestamp?
    Sì.
  • Re: Errore database: nomecolonna was not found in this ResultSet

    sspintux ha scritto:


    Scusa ma personalmente mi sto peredendo:
    l'errore originale sul nome di colonna "user" che nel resulset risulta "current_user" persiste ancora ?

    se si prova a qualificare la tabella nella query anche con lo schema
    perchè è impossibile che a pari condizioni
    la query eseguita direttamente sul db ti restituisca cose diverse se eseguita da codice java

    HTH
    No adesso l'errore che mi usciva sulla nome della colonna "user" è stato risolto.
    Ora mi esce questo altro errore "Eccezione instanziazione 1 f.getGroup().add()Bad value for type int : auditel" che non capisco sinceramente perchè non c'è nessun attributo che si chiama auditel e ho controllato i tipi di valori degli attributi e sono corretti quelli che ho inserito.
  • Re: Errore database: nomecolonna was not found in this ResultSet

    andbin ha scritto:


    Messi1D ha scritto:


    								int yyS = Integer.parseInt(dataOraStart.substring(0,4));
    								int mmS = Integer.parseInt(dataOraStart.substring(5,7));
    								int ddS = Integer.parseInt(dataOraStart.substring(8,10));
    No, non si fanno questi substring, che sono molto brutti e error-prone.

    Messi1D ha scritto:


    Starttime e Endtime sono dei Timestamp quindi forse dovrei mettere getTimestamp?
    Sì.
    Ho provato a mettere getTimestamp e mi da proprio errore.
    E cosa dovrei fare per estrarre ora e data da un Timestamp? Io ho sempre fatto con i substring anche a lezione.
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Ma invece di continuare ad andare "a tentoni", non sarebbe meglio se postassi qui la struttura della tabella, così potremmo capire esattamente come si chiamano i campi, di che tipo sono, ecc?

    Ora, io non ho mai lavorato con PostgreSQL, ma da una breve ricerca su Google mi pare di capire che il comando per ottenere la struttura della tabella sia
    
    \d nome_tabella
    
    Ciao.
  • Re: Errore database: nomecolonna was not found in this ResultSet

    LeleFT ha scritto:


    Ma invece di continuare ad andare "a tentoni", non sarebbe meglio se postassi qui la struttura della tabella, così potremmo capire esattamente come si chiamano i campi, di che tipo sono, ecc?

    Ora, io non ho mai lavorato con PostgreSQL, ma da una breve ricerca su Google mi pare di capire che il comando per ottenere la struttura della tabella sia
    
    \d nome_tabella
    
    Ciao.
                          Table "public.log2_3min_groups_clean"
          Column      |            Type             | Collation | Nullable | Default 
    ------------------+-----------------------------+-----------+----------+---------
     id               | integer                     |           | not null | 
     user             | integer                     |           |          | 
     family_id        | integer                     |           |          | 
     group_id         | integer                     |           |          | 
     program_id       | integer                     |           |          | 
     epg_channel_id   | integer                     |           |          | 
     starttime        | timestamp without time zone |           |          | 
     endtime          | timestamp without time zone |           |          | 
     id_stesso_gruppo | integer                     |           |          | 
    Indexes:
        "log2_3min_groups_clean_pkey1" PRIMARY KEY, btree (id)
    Questa è la struttura della tabella, id_stesso_gruppo è la colonna che ho aggiunto io con il mio codice nella prima parte che funziona senza problemi.
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Ma non ti puoi scaricare PostgreSQL sul tuo PC e farti dare una copia del database o fartene uno tuo di prova, invece di stare a impazzire? Dai per superati i problemi di connessione, ma non mi sembra proprio...

    https://www.postgresql.org
    https://www.postgresqltutorial.com
Devi accedere o registrarti per scrivere nel forum
38 risposte