Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515

    Errore: database locked

    con questo cod:
    codice:
    String s2 = passNuova.getText();
    String idString = "1";
    if (s2.equals("")){
    JOptionPane.showMessageDialog(null, "Inserire la Password Corretta", "Messaggio", JOptionPane.WARNING_MESSAGE);
    }else {
    try {
    Class.forName("org.sqlite.JDBC");
    						}
    catch (Exception exc) {
    System.out.println("Errore - Driver jdbc non presente: "+ exc.getMessage());
    }
    try {			
    conn = DriverManager.getConnection("jdbc:sqlite:basi.sqlite");							
    String query = "UPDATE password SET pass=? where id="+idString;
    pstmt = (PreparedStatement) conn.prepareStatement(query);							
    pstmt.setString(1, s2); 				
    pstmt.executeUpdate();							
    							
    JOptionPane.showMessageDialog(null, "Password Modificata!", "Messaggio", JOptionPane.WARNING_MESSAGE);		
    pstmt.close();
    conn.close();
    }
    						
    catch (Exception exc) {
    System.out.println("Errore: "+ exc.getMessage());
    }
    cerco di fare una modifica al database ma mi esce questo errore...stò impazzendo da ieri sera...

    dove sbaglio??

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Come ho già detto e ripetuto, non ammazzare in quel modo le eccezioni.
    Togliti fin da subito questa bruttissima abitudine: le eccezioni vanno fatte stampare con tutto il loro stackTrace altrimenti diventa particolarmente difficile (se non impossibile) risalire alla loro causa.

    Quando hai un blocco try/catch, questo va fatto in uno ed un solo modo:
    codice:
    try {
       ...
    } catch (Exception e) {
       e.printStackTrace();
    }
    Prima o dopo l'istruzione in grassetto puoi fare quel che ti pare, ma quella deve esserci sempre, in modo categorico.

    Ed il risultato di quell'istruzione è quanto va eventualmente postato nel forum quando non si sa cosa fare. Scrivere semplicemente "mi dà database locked" non dice nulla né del tipo di errore, né di dove questo si verifica, né di quale sia la causa che l'ha originato. In pratica, nel 90% dei casi, non stai dando nessuna informazione utile.


    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

  3. #3
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515
    ...hai ragione!!!!

    l'errore me lo da in:

    pstmt.executeUpdate();

    come mai???

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Lo stacktrace, cavolo!

    Comunque la query rendila coerente: nel senso, perché pass lo passi come parametro (usando ?) mentre id lo concateni direttamente?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515
    ...sono coerenti!!!

    l'id rimane sempre quello mentre è la "pass" che dovrebbe modificare ma non lo fa!!!!

    altre modifiche le ho fatte in questo modo...non ho mai avuto problemi!!!

    da ieri sta facendo capricci non capisco!!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da paul78
    ...sono coerenti!!!

    l'id rimane sempre quello mentre è la "pass" che dovrebbe modificare ma non lo fa!!!!

    altre modifiche le ho fatte in questo modo...non ho mai avuto problemi!!!

    da ieri sta facendo capricci non capisco!!!
    Coerente: scegli il metodo di scrittura delle query: o TUTTE PREPARED STATEMENT o TUTTE query normali.

    Concatenare in modo barbaro come fai, non ha senso e può crearti problemi.

    Poi stampa tutto lo stacktrace altrimenti non ci metti in condizioni di aiutarti.


    infine due note:
    1. perché apri una connessione per ogni istruzione al database? Mi pare di averti già detto che non è una cosa da fare (perché aprire una connessione non è un'operazione leggera)
    2. perché mischi la logica di business e la logica di grafica?
    RTFM Read That F*** Manual!!!

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.