Errore database: nomecolonna was not found in this ResultSet

di il
38 risposte

Errore database: nomecolonna was not found in this ResultSet

Salve,
mi chiamo Elisabetta e sono una studentessa di informatica e mi sto per laureare.
Per la tesi di laurea, che sto finendo, ho dovuto creare un codice che andasse a modificare un database che mi è stato dato dal relatore, di preciso ho dovuto aggiungere due colonne su due tabelle diverse una che contiene la categoria di persone e l'altra che da a un gruppo formato dalle stesse persone lo stesso identificatore.
Il codice risulta essere corretto su eclipse solo che quando lo vado ad eseguire mi esce il seguente errore: "Eccezione instanziazione f.getGroup().add()The column name user was not found in this ResultSet."
Ho capito in quale parte del codice è l'errore ma non capisco ne il perchè mi dia errore e ne come risolvere questo problema che ripeto a me sembra corretto e anche secondo eclipse. Chiedo quindi un aiuto per risolvere il problema il prima possibile dato che devo consegnare la tesi entro i primi di ottobre.

A seguire il codice in questione:
//per ogni id della famiglia mi restituisce: canale, utente, data inizio e ora, data fine e ora
			for(Famiglia f: family) {
				try(PreparedStatement pst_G = conn.prepareStatement("SELECT id, epg_channel_id, user, starttime, endtime FROM log2_3min_groups_clean WHERE family_id = ?")) {
					//set the variables
					pst_G.setInt(1, f.getId()); //parameters are: (index <of var>, value <of var>)
					//eseguo la query
					ResultSet rs_G = pst_G.executeQuery();
					//foreach record from the database about every action of every family's component
					//int indexGroup = 0;
					//int indexUserIntoGroup = 0; attualmente non in uso
					while(rs_G.next()) {
						//se la lista è vuota
						if(f.getGroup().isEmpty()){
							//instanzio il primo gruppo e utente

							... //codice funzionante irrilevante

								try {

									f.getGroup().add(new Gruppo(rs_G.getInt("epg_channel_id"),  dS, hS, dE, hE));

                                                                        //credo che l'errore sia in questo ciclo for o nel comando getInt perchè non riconosce user
									for(int idx = 0; idx < utenti.size(); idx++)
										if(utenti.get(idx).getId() == rs_G.getInt("user"))
											idxUtente = idx;

									if(f.getGroup().get(0).addUtente(utenti.get(idxUtente), rs_G.getInt("epg_channel_id"), dS, hS, dE, hE, rs_G.getInt("id")) == true) { //get(0) it's better than others 'cause if we know the list it's empty and also we use add() method, we know there is only one element at the index=0
										System.out.println("Expected");
									} else {
										System.out.println("Unexpected");
									}

								} catch (Exception e) {
									System.out.println("Eccezione instanziazione 1 f.getGroup().add()" + e.getMessage());
								}

38 Risposte

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

    Hai notato che nella query c'è L.user;

    prova mettendo un alias L.user as user

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

    Quello è stato un mio errore di scrittura adesso comunque ho provato anche quello ma niente, mi da sempre quell'errore. Ora ho corretto comunque
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Grazie per aver detto di aver corretto ; cominciavo a pensare di aver avuto le traveggole.

    E se provassi a vedere quali sono i nomi dei campi del resultset?
    Oppure se vai per indice nvece che per nome?
    P. S.
    Il codice mettilo tra il tag "code" altrimenti è difficile leggerlo
  • Re: Errore database: nomecolonna was not found in this ResultSet

    sspintux ha scritto:


    Grazie per aver detto di aver corretto ; cominciavo a pensare di aver avuto le traveggole.

    E se provassi a vedere quali sono i nomi dei campi del resultset?
    Oppure se vai per indice nvece che per nome?
    P. S.
    Il codice mettilo tra il tag "code" altrimenti è difficile leggerlo
    In che senso andare per indice invece che per nome? Non ho idea di come si faccia, in università mi hanno insegnato solo per nome, come ho scritto quindi se mi fai un esempio ti ringrazio
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Messi1D ha scritto:


    .....
    In che senso andare per indice invece che per nome? Non ho idea di come si faccia, in università mi hanno insegnato solo per nome, come ho scritto quindi se mi fai un esempio ti ringrazio
    spiacente ma al momento non ho nessun IDE java installato e non posso farti esempi;

    comunque, IMHO, all'università non possono insegnarti tutto
    ma quello che deve restare è la 'forma mentis' per approcciare i problemi;

    ... prova a fare qualche ricerca in rete.

    P,S,
    ma la sezione giusta del forum dove postare la domanda è Java o sbaglio ?
  • Re: Errore database: nomecolonna was not found in this ResultSet

    sspintux ha scritto:


    Messi1D ha scritto:


    .....
    In che senso andare per indice invece che per nome? Non ho idea di come si faccia, in università mi hanno insegnato solo per nome, come ho scritto quindi se mi fai un esempio ti ringrazio
    spiacente ma al momento non ho nessun IDE java installato e non posso farti esempi;

    comunque, IMHO, all'università non possono insegnarti tutto
    ma quello che deve restare è la 'forma mentis' per approcciare i problemi;

    ... prova a fare qualche ricerca in rete
    Eh ho cercato in rete un modo per risolvere questo problema ma non ho trovato nulla che in ha aiutato e speravo che magari scrivendo qui qualcuno mi avrebbe aiutato
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Allora, visto che mi pare Java, chiedi all'amministratore del forum di spostare la discussione nella sezione java
  • Re: Errore database: nomecolonna was not found in this ResultSet

    @Elisabetta, il fatto che l'univ non ti insegni tutto e' un scusa abbastanza sciocca.

    1)
    L'univ, come la scuola, ti insegna i CONCETTI FONDAMENTALI, e poi TU sfrutti questi concetti per risolvere i TUOI problemi.

    NESSUNO ti insegna quanto fa 123*456. Quello che viene fatto e' insegnarti le tabelline (la moltiplicazione di OGNI cifra per OGNI cifra) e come si fa la moltiplicazione con carta e matita usando le colonne come alternativa alla moltiplicazione per 10.

    Se non sai qualcosa, vai a caccia di informazioni. Una volta c'erano le biblioteche e le enciclopedie. Oggi c'e' Internet, Google, i Forum, ecc.

    2)

    devi imparare ad interpretare gli errori, e trovare un modo per comprenderli. Ti dice che 'nomecolonna' non si trova nel resultset.
    Ok, allora QUALI colonne ci sono nel resultset?.

    Come si fa? Ad esempio si scrive un programmino minimale (giusto un main) per testare la connessione, la query ed il risultato.

    Ad esempio, TE LO RICODI che le colonne, se le ricuperi per INDICE, gli indici INIZIANO da 1 e NON da 0?
  • Re: Errore database: nomecolonna was not found in this ResultSet

    X Messi1D: Grazie per la segnalazione, ho spostato la discussione nel forum java che è più appropriato
  • Re: Errore database: nomecolonna was not found in this ResultSet

    migliorabile ha scritto:


    @Elisabetta, il fatto che l'univ non ti insegni tutto e' un scusa abbastanza sciocca.

    1)
    L'univ, come la scuola, ti insegna i CONCETTI FONDAMENTALI, e poi TU sfrutti questi concetti per risolvere i TUOI problemi.

    NESSUNO ti insegna quanto fa 123*456. Quello che viene fatto e' insegnarti le tabelline (la moltiplicazione di OGNI cifra per OGNI cifra) e come si fa la moltiplicazione con carta e matita usando le colonne come alternativa alla moltiplicazione per 10.

    Se non sai qualcosa, vai a caccia di informazioni. Una volta c'erano le biblioteche e le enciclopedie. Oggi c'e' Internet, Google, i Forum, ecc.

    2)

    devi imparare ad interpretare gli errori, e trovare un modo per comprenderli. Ti dice che 'nomecolonna' non si trova nel resultset.
    Ok, allora QUALI colonne ci sono nel resultset?.

    Come si fa? Ad esempio si scrive un programmino minimale (giusto un main) per testare la connessione, la query ed il risultato.

    Ad esempio, TE LO RICODI che le colonne, se le ricuperi per INDICE, gli indici INIZIANO da 1 e NON da 0?
    Ma infatti la mia non è una scusa ho cercato tanto in giro per risolvere il mio problema e ho provato di tutto ma non ci sono riuscita ed è per questo che ho scritto in questi forum.
    Punto numero 2 la colonna user c'è nel ResultSet e infatti non capisco perchè non mi viene letta e io credo che il problema non stia nella colonna user ma nel ciclo for e if in cui è stata inserita ma non capisco perchè quello è un errore.
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Ciao,
    usare gli indici invece dei metadati delle tabelle è più semplice, invece del nome della colonna inserisci il numero della colonna nel ResultSet.

    L'errore comunque è strano, il codice mi sembra non avere errori. Puoi eseguire quella query sul database e vedere cosa produce? Lo chiedo perchè quel catch comprende anche l'esecuzione della query e magari è lì che non trova user, anche se sarebbe strano in quanto ancor prima di produrre il ResultSet doveva produrti un errore SQL.. Ma tentar non nuoce.

    Puoi provare a vedere se tutti i metadati sono corretti utilizzando queste istruzioni?
    
    ResultSetMetaData rsmd = rs.getMetaData();  //estrapola i metadati dal resultset
     String name = rsmd.getColumnName(1);       // restituisce il nome della prima colonna
    
    fallo per ogni campo nella query.
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Sh3dir ha scritto:


    Ciao,
    usare gli indici invece dei metadati delle tabelle è più semplice, invece del nome della colonna inserisci il numero della colonna nel ResultSet.

    L'errore comunque è strano, il codice mi sembra non avere errori. Puoi eseguire quella query sul database e vedere cosa produce? Lo chiedo perchè quel catch comprende anche l'esecuzione della query e magari è lì che non trova user, anche se sarebbe strano in quanto ancor prima di produrre il ResultSet doveva produrti un errore SQL.. Ma tentar non nuoce.

    Puoi provare a vedere se tutti i metadati sono corretti utilizzando queste istruzioni?
    
    ResultSetMetaData rsmd = rs.getMetaData();  //estrapola i metadati dal resultset
     String name = rsmd.getColumnName(1);       // restituisce il nome della prima colonna
    
    fallo per ogni campo nella query.
    Quindi invece di scrivere rs_G.getInt("user") mettere rs_G.getInt(numerocolonna) giusto?
    Comunque lo so che l'errore è strano perchè anche a me sembra tutto corretto ora sto provando ad eseguire il codice a piccole parti per vedere dove sta l'errore e se lo eseguo fino a dove ho postato qui sul sito funziona quindi credo sia un problema della seconda parte che non ho messo qui sul forum ma anche quella mi sembra corretta sinceramente. Comunque adesso provo ad eseguire le istruzioni che mi hai mandato
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Ok, facci sapere!
  • Re: Errore database: nomecolonna was not found in this ResultSet

    Sh3dir ha scritto:


    Ok, facci sapere!
    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
Devi accedere o registrarti per scrivere nel forum
38 risposte