Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120

    [JAVA] inserimento double mysql

    Ciao,
    sto cercando di inserire un double in mysql ma sulla tabellla continua a finirci uno zero.
    La variabile in questione è il prezzo.
    Il codice del metodo con l'sql:
    codice:
    public boolean insertGioco(Gioco gioco) {
            int nRow = 0;
            try {
                pst = c.prepareStatement("INSERT INTO tab_gioco "
                        + "(titolo, casa_produttrice, immagine, prezzo, "
                        + "id_genere, id_contenuto, id_eta) "
                        + "VALUES (?,?,?,?,?,?,?);");
                
                pst.setString(1, gioco.getTitolo());
                pst.setString(2, gioco.getProduttore());
                pst.setString(3, gioco.getImgPath());
                pst.setDouble(4, gioco.getPrezzo());
                pst.setInt(5, gioco.getGenere().getId());
                pst.setInt(6, gioco.getContenuto().getId());
                pst.setInt(7, gioco.getEta().getId());
                
                nRow = pst.executeUpdate();
    
            } catch (SQLException ex) {
                Logger.getLogger(DBServer.class.getName()).log(Level.SEVERE, null, ex);
            }
    
            if (nRow==0){
                return false;
            }
            return true;
    
        }
    e qualche riga di codice per testarlo:
    codice:
    DBServer db = DBServer.getDBServer();
            
            Gioco gioco = new Gioco("Bioshock", "Betesda", "img.png", 22.7, 
                                     new Genere("fps"), 
                                     new Contenuto("violenza", "blabla"), 
                                     new Eta(18));
            db.insertGioco(gioco);
    Qualche suggerimento?
    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120
    ops scusate, è terminata la sessione mentre postavo e per sbaglio non ho messo il titolo.
    Il titolo doveva essere "[JAVA] inserimento double su mysql"

  3. #3
    Scusa 2 domande al volo : ma il campo dove inserisci il valore nel database è settato correttamente?
    Hai provato a passare direttamente la query a phpmyadmin o chi per esso per vedere se tutto va come dovrebbe?

  4. #4
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120
    Il campo su mysql è di tipo double (6,2) e se eseguo l'insert a mano su phpmyadmin funziona correttamente.
    Non riesco proprio a capire perchè non funziona da metodo.

  5. #5
    Ma i valori ti escono sballati anche quando fai la query da phpmyadmin oppure no.
    Ho fatto un esempino stupido e sinceramente la cosa funziona:
    codice:
     public static void main(String[] args) throws Exception {
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/JESTIN", "root", "");
            PreparedStatement pstCreate = connection.prepareStatement("CREATE TABLE TEST(ID INT PRIMARY KEY,VALUE DOUBLE(6,2))");
            pstCreate.executeUpdate();
            String insertSqlString = "INSERT INTO TEST(ID,VALUE) VALUES (?,?)";
            String insertSqlStringFormat = "INSERT INTO TEST(ID,VALUE) VALUES (%d,%.2f) \n";
            PreparedStatement pst = connection.prepareStatement(insertSqlString);
            Random random = new Random();
            System.out.println("---------------BEGIN INSERT-----------------");
    
            for (int i = 0; i < 10; i++) {
                pst.setDouble(1, i);
                double value = random.nextDouble();
                pst.setDouble(2, value);
                pst.executeUpdate();
                System.out.format(Locale.US, insertSqlStringFormat, new Object[] { i, value });
            }
            System.out.println("---------------END INSERT-----------------");
            Statement st = connection.createStatement();
            ResultSet resultSet = st.executeQuery("SELECT ID,VALUE FROM TEST");
            System.out.println("---------------BEGIN QUERY-----------------");
            System.out.println("\t ID \t\t VALUE");
            while (resultSet.next()) {
                int id = resultSet.getInt(1);
                double value = resultSet.getDouble(2);
                System.out.println("\t " + id + "\t\t" + value);
            }
            System.out.println("---------------END OF QUERY-----------------");
            PreparedStatement pstDrop = connection.prepareStatement("DROP TABLE TEST");
            pstDrop.executeUpdate();
        }

  6. #6
    Scusate è partito un doppio post....

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Di che tipo è il campo a db?
    Quel pezzo di codice lancia eccezione o semplicemente viene eseguito "sbagliato"?

    ps:

    Questo pezzo non si può vedere:

    codice:
    if (nRow==0){
                return false;
            }
            return true;
    Questo fa la stessa cosa ma evita duplicazione di booleani:

    codice:
    return nRow != 0;
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120
    Grazie per le risposte.
    Il campo sul db è di tipo double.
    Se scrivo l'insert a mano su phpmyadmin inserisce il double correttamente.
    Non lancia nessuna eccezione, semplicemente continua a salvare uno 0 al posto dei numeri che gli passo.

    codice:
    return nRow != 0;
    Grazie per le dritta, in effetti è piu elegante.

    EDIT
    Ho risolto.
    Dopo aver aggiunto alcuni campi alla tabella ho dimenticato di aggiornare uno dei costruttori del gioco....
    Scusate per la perdita di tempo. Ho letto e riletto tutto varie volte ma proprio non l'avevo notato.
    Grazie per l'aiuto

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.