Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123

    [Java] - MySQL (JDBC) Colonna non esistente

    Ciao a tutti,

    Ho un problema piuttosto strano.

    Ho una tabella capi, dichiarata così:
    codice:
    CREATE TABLE Capi("id INT UNSIGNED NOT NULL AUTO_INCREMENT,"+
    			    "nome CHAR(50) NOT NULL,"+
    			    "prezzo DOUBLE NOT NULL,"+
    			    "PRIMARY KEY(id))"
    );
    Quando creo questa Query, inserendo il primo Capo di abbigliamento


    codice:
    stm.executeUpdate("INSERT INTO Capi(nome,prezzo) VALUES('"+nome+"','"+prezzo+"')");
    mi dice "column 'nome' not found"!

    Ma se chiudo il software, alla riapertura, il Capo è presente (insomma, viene comunque inserito nel db).

    Eseguo quell'operazione, perchè una volta inserito leggo l'id con il quale è stato memorizzato, e creo l'oggetto, passando anche questo id (così lo utilizzerò per le Taglie)..ma, ovviamente, se creo una taglia mi da un errore.
    Tuttavia, come detto, se chiudo il software e lo riapro, clicco sull'abito, posso aggiungere le taglie tranquillamente.

    Quindi la domanda è..come mai quell'errore?

    Grazie a tutti! ^^

  2. #2
    allora entra in phpmyadmin e prova a mettere non null il nome e ti consiglio anche di mettere varchar

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da Jason Bourne
    allora entra in phpmyadmin e prova a mettere non null il nome e ti consiglio anche di mettere varchar
    Ho modificato il tipo di dato in varchar.

    not null c'è già...non capisco che intendi quindi.. e non utilizzo PHPMyAdmin!

    Grazie!

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    uhm
    so che sto per dire una cosa che non sta né in cielo né in terra, ti succede solo con il primo elemento? quando inserisci il secondo?
    perché posso pensare che l'errore nasca dal fatto che non dato un valore iniziale a id (e te lo segnali in quel modo).

    execute mi pare che ritorni un int (il numero di righe modificate): raccogli il valore di ritorno e stampalo a video

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

    Re: [Java] - MySQL (JDBC) Colonna non esistente

    Originariamente inviato da Patrick Jane
    codice:
    CREATE TABLE Capi("id INT UNSIGNED NOT NULL AUTO_INCREMENT,"+
    			    "nome CHAR(50) NOT NULL,"+
    			    "prezzo DOUBLE NOT NULL,"+
    			    "PRIMARY KEY(id))"
    );
    Non mi è ben chiara questa istruzione SQL... o meglio: le virgolette che hai usato dentro le parentesi non dovrebbero esserci e non capisco l'ultima tonda chiusa. Se, come credo, si tratta di un'istruzione SQL indotta tramite codice Java, allora c'è comunque qualcosa che non va... questo dovrebbe creare la tabella in questione:

    codice:
    String sql = "CREATE TABLE Capi(id INT UNSIGNED NOT NULL AUTO_INCREMENT,"+
                    "nome CHAR(50) NOT NULL,"+
                    "prezzo DOUBLE NOT NULL,"+
                    "PRIMARY KEY(id));";
    
    stmt.executeQuery( sql );
    Detto questo, entra nel DB e controlla la struttura della tabella, poi fatti stampare il trace dell'eccezione.


    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

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Prima di tutto ti chiedo scusa Lele..doveva essere questa l'istruzione:
    codice:
    stm.executeUpdate("CREATE TABLE Taglia("+
                               "id INT UNSIGNED NOT NULL AUTO_INCREMENT,"+
    	   	           "id_capo INT UNSIGNED NOT NULL,"+
    			   "taglia VARCHAR(5) NOT NULL,"+
    			   "quantita INT NOT NULL,"+
    			   "PRIMARY KEY(id))"
    );
    è tutto risolto!!

    Ho stampato lo stackTrace() ed ho notato la riga dell'errore..in quella riga facevo il cast:
    codice:
    id = Long.parseLong(rs.getString("id"));
    solo che non mi ero accorto di aver specificato "nome" al posto di "id"..una svista che mi è costata qualche ora!


    Grazie per l'interesse e per gli aiuti!!

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.