Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775

    [mysql] - eliminare dati nel database



    Non capisco cosa sbaglio in questo codice:

    codice:
    try {
                //con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/pizzeria, root, ");
                con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/pizzeria","root","");
                con.setAutoCommit(false);
    
                JOptionPane.showMessageDialog(null,"Accesso effettuato.\nPreparazione eliminazione campo in corso.");
    
                con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
                Statement dati = con.createStatement();
                
                int SQL = dati.executeUpdate("DELETE FROM prodotti WHERE Categoria='Dog';");
                
                con.close();
    
            } catch(Exception e) {
                JOptionPane.showMessageDialog(null,"Se non hai scritto niente sei un pirla!Sennò è un errore non riconosciuto!");
                System.out.println(e);
            }
    Dovrei eliminare una riga (o tutte le righe che hanno come Categoria = Dog).
    M non capisco come mai non succede assolutamente nulla (nè errori, e tanto meno si cancella la liga) quando clicco sul bottone che fa partire questo codice.

    Qualcuno riesce a dirmi dove sbaglio?

    Grazie!

  2. #2
    non dando errori non sai bene dove andare a mettere mani.

    Per curiosita, prova a togliere il ; dopo 'dog'
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  3. #3
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    Originariamente inviato da bomberdini
    non dando errori non sai bene dove andare a mettere mani.

    Per curiosita, prova a togliere il ; dopo 'dog'
    Se elimino il ; mi entra nel catch.. boh

  4. #4
    dico cosi :

    int SQL = dati.executeUpdate("DELETE FROM prodotti WHERE Categoria='Dog' ");

    non so se ero stato chiaro
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  5. #5
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    Originariamente inviato da bomberdini
    dico cosi :

    int SQL = dati.executeUpdate("DELETE FROM prodotti WHERE Categoria='Dog' ");

    non so se ero stato chiaro
    Ho provato con questo tuo ultimo codice ma niente, non elimina e non da nessun errore

    Ho un dubbio.. è giusto utilizzare quel int SQL = dati.executeUpdate?
    Perchè notato che è lo stesso che utilizzo per l'inserimento di dati in tabella, quindi non so, magari l'errore fondamentalmente è li..

  6. #6
    si l'execute update si usa anche per il delete.

    una domanda. nella tua tabella e' presente qualche prodotto con categoria = 'Dog' ??
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  7. #7
    Il punto e virgola è giusto

    usa questo catch, spero ti dica l'errore.

    catch (SQLException e){
    // handle any errors
    System.out.println("Error Number: " + e.getErrorCode() + "
    ");
    System.out.println("Message: " + e.getMessage() + "
    ");
    System.out.println("SQLSTATE: " + e.getSQLState() + "
    ");
    }
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  8. #8
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    sisi, di campi "Dog" ne ho abbastanza..

    http://i43.tinypic.com/35alq82.jpg

    E il catch dove devo inserirlo? AL posto di quello che ho già?
    Perchè se è cosi non credo che riesca a veder nulla, siccome non entra mai nel catch e non da nessun errore..

  9. #9
    mmm

    prima di fare la con.close()

    prova a mettere con.commit();
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  10. #10
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    Originariamente inviato da bomberdini
    mmm

    prima di fare la con.close()

    prova a mettere con.commit();
    MALEDETTO commit() è la seconda volta che mi frega

    Grazie mille! Ora funge perfettamente

    --

    Già che ci sono chiedo l'ennessimo dubbio, su una cosa al quanto banale ma che non capisco come mai non funga:

    In pratica ho una tabella "ditta", dove all'interno devo inserire una sola riga, che utilizzo come registrazione..

    Il problema arriva quando io mi registro una seconda volta..
    Non chiedetemi come mai xD, ma io posso permettere una sola registrazione all'utente, ovvero come detto sorpa, la tabella "ditta" dovrà avere una sola riga.

    Utilizzo questo codice, per il controllo "se la tabella è vuota o meno":

    codice:
    try {
                Class.forName("com.mysql.jdbc.Driver"); //si carica il driver
            } catch (ClassNotFoundException exc) {
                System.out.println("ERRORE, Driver jdbc non presente: "+exc.getMessage());
            }
    
            Connection con = null;
    
            try {
                con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/pizzeria","root","");
                con.setAutoCommit(false);
    
                JOptionPane.showMessageDialog(null,"Controllo se esiste già una Pizzeria.");
    
                /* con questa istruzione si fa in modo che il commit avvenga solo se esplicitamente invocato dall'utente*/
                con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
    
                Statement dati = con.createStatement();// si crea un oggetto Statement
                
                ResultSet results = dati.executeQuery("SELECT NomeTit FROM ditta");
    
                if (results != null) {
                    
                    // se NON è vuota, manda un errore
                    
                } else {
                    // se E' vuota, continua [....]
                }
                
                con.commit();
                con.close();
    
            } catch(Exception e) {
                JOptionPane.showMessageDialog(null,"Se non hai scritto niente sei un pirla!Sennò è un errore non riconosciuto!");
            }
    Credo di aver sbagliato sicuramente il ResultSet, anche se a logica mi sembra "corretto"..

    C'è un modo più rapido e corretto per controllare se la tabella è vuota o se è piena?
    E nel caso, come andrebbe sistemato l'if?

    Grazie ancora!

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.