Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    7

    JAVA DB non inserisce i dati

    Salve sto facendo un programma dove interagisco con un DB,in questa sezione del programma devo inserire username,password e ruolo dell'utente. Vi allego i metodi usati,il programma non da errori e ho fatto uscire in output il numero di righe interessate dalla query e da 1 quindi se non erro è giusto. Però quando vado a controllare il db su workbench non ha effettuato le modifiche. come mai?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    7
    METODI:
    private void caricaActionPerformed(java.awt.event.ActionEvent evt) {
    String username = null,ruolo=null,password;
    username = usernameField.getText();
    password = passwordField.getText();
    ruolo = ruoloField.getText();
    try {
    aggiungiUtente(username,password,ruolo);
    } catch (SQLException ex) {
    Logger.getLogger(InserisciUtente.class.getName()). log(Level.SEVERE, null, ex);

    }
    }
    private void aggiungiUtente(String username,String password,String ruolo) throws SQLException {
    Connection conn;
    String url="jdbc:mysql://localhost:3306/gestionale",user="elia",psw="Elia1499";
    conn = (Connection) DriverManager.getConnection(url,user,psw);
    conn.setAutoCommit(false);
    String sql= "insert into Utenti (username,password,ruolo) VALUES (username,password,ruolo);";
    Statement st = conn.createStatement();
    int executeUpdate = st.executeUpdate(sql);
    System.out.println("rows Affected: " + executeUpdate);
    System.out.println("statement " + st);
    System.out.println("username: " + username + " password: " + password + "ruolo: " + ruolo);


    }

    OUTPUT:
    run:
    rows Affected: 1
    statement com.mysql.jdbc.StatementImpl@41c18465
    username: dfdf password: dfdruolo: dfdfdfdf

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Java ha una sezione dedicata del forum.
    Inoltre, il codice va postato all'interno degli appositi tag CODE.

    Correggo io e 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

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Hai impostato esplicitamente setAutoCommit(false): questo significa che non viene fatta la commit automatica, ma devi farla tu esplicitamente chiamando il metodo commit() sull'oggetto Connection alla fine delle operazioni di modifica (insert/update) e questa cosa non la stai facendo... di conseguena, tutte le modifiche apportate vengono semplicemente buttate via.

    Il mio consiglio è di lasciare l'auto-commit a true (come da impostazione di default).

    Inoltre: gli Statement e le Connection (ed, eventualmente, i ResultSet per le query di SELECT) vanno chiuse dopo averle usate ed è importante che questo venga fatto.


    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

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da frenz_y Visualizza il messaggio
    String sql= "insert into Utenti (username,password,ruolo) VALUES (username,password,ruolo);";
    Questo che hai scritto (parte in rosso in modo specifico) non ha senso. Prima di VALUES ci vanno appunto i nomi delle colonne della tabella. Ma dopo il VALUES ci vanno i valori veri e propri. Non puoi mettere username solo così

    Dovresti comporre la stringa SQL usando la concatenazione delle stringhe e accodando le tue vere variabili username, ecc.. nella stringa. Questo però ti espone a parecchi problemi: di sicurezza, di escaping dei caratteri speciali.

    Quando devi passare valori ad una query di insert/update/delete, è bene usare un PreparedStatement
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    7
    Si lo so e avevo anche provato con il PreparedStatement ma non funzionava comunque

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    7
    Ok grazie mille provo subito, è la prima volta che lavoro sui db in java

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    7
    Grazie mille

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.