Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    java problema connessione a mysql

    ciao
    non riesco a capire perchè non mi connetto al db mysql ,
    il codice è :

    codice:
    public class jconndb1 {
    
       private String nomeDB;       // Nome del Database a cui connettersi
       private String errore;       // Raccoglie informazioni riguardo l'ultima eccezione sollevata
       private Connection db;       // La connessione col Database
       private boolean connesso;    // Flag che indica se la connessione è attiva o meno
     
       public jconndb1(String nomeDB) { this(nomeDB, "", ""); }
    
       // Apre la connessione con il Database
       public boolean connetti() {
          connesso = false;
          try {
             // Carico il driver JDBC per la connessione con il database MySQL
             Class.forName("com.mysql.jdbc.Driver");
             // Controllo che il nome del Database non sia nulla
             if (!nomeDB.equals("")) {
                        db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB);
                } 
                // La connessione è avvenuta con successo
                connesso = true;
             } else {
                System.out.println("Manca il nome del database!!");
                System.exit(0);
             }
    
          } catch (Exception e) { errore = e.getMessage(); }
    
          return connesso;
    
       }
    
    
       // Chiude la connessione con il Database
       public void disconnetti() {
    
          try {
             db.close();
             connesso = false;
          } catch (Exception e) { e.printStackTrace(); }
       }
    
       
       public boolean isConnesso() { return connesso; }   // TRUE se connessione Database attiva
       public String getErrore() { return errore; }       // messaggio errore ultima eccez.sollevata
        
        public static void main(String[] args) {
    
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    jconndb1 ex = new jconndb1("mydb");
                    ex.connetti();
                    ex.disconnetti();
                }
            });
    
        }
    
    }
    se eseguo la classe mi da errore nullpointerexception sulla disconnessione ;

    per favore potete aiutarmi ?

    grazie
    ciao

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Mi pare evidente che se ti dà una NPE (NullPointerException) sulla disconnessione significa che al punto precedente (connessione) non è andata a buon fine... del resto non potrai mai saperlo perchè non effettui la stampa dello StackTrace in caso di eccezione, ma salvi il messaggio di errore in una variabile; poi, senza mai testare che l'effettiva connessione sia andata a buon fine, e senza controllare che tale variabile abbia effettivamente un messaggio, effettui la disconnessione.

    Quel codice l'hai preso evidentemente dalla mia vecchia pillola (codice scritto molto di getto, per il quale non avevo previsto una stampa dello stackTrace in quanto era confinato ad una classe a sé stante che doveva essere usata in modo diverso). Modifica la gestione dell'eccezione in questo modo:

    codice:
    try {
       ...
    } catch (Exception e) {
       e.printStackTrace();
    }
    E vedrai che nella connessione otterrai sicuramente degli errori (anche perchè non ho mai visto una installazione di MySQL che non richiede utente e password per l'accesso).


    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
    grazie

    ho messo user e psw ;
    ho visualizzato il messaggio , mi dice :
    errore : com.mysql.jdbc.Driver

    ho installato il connettore jdbc mysql-connector-java-5.1.11
    il mio mysql è : 5.5.24

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da gbu123
    grazie

    ho messo user e psw ;
    ho visualizzato il messaggio , mi dice :
    errore : com.mysql.jdbc.Driver
    No... questa è solo la prima riga dell'errore (che dice solo CHI ha generato un errore), non è tutto il trace dell'eccezione (ovvero, quale errore è stato sollevato). Devi riportare TUTTO quello che ti viene stampato in console.

    ho installato il connettore jdbc mysql-connector-java-5.1.11
    il mio mysql è : 5.5.24
    Installato come? Nella pillola che ho scritto io dicevo di scompattare il JAR. Questa è una pratica che può essere utile se si intende includere il driver nel JAR della propria applicazione, generalmente non si fa: si copia il JAR nella directory delle librerie esterne e si fa in modo che il JAR della propria applicazione lo includa nel proprio classpath.


    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
    ecco i messaggi completi , grazie , ciao

    G:\JAVA\JAVA_2012\JFRAMES\PROVE>java jconndb1
    errore : com.mysql.jdbc.Driver
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at jconndb1.connetti(jconndb1.java:45)
    at jconndb1$1.run(jconndb1.java:164)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectio nPrivilege(Unknown
    Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

  6. #6
    chiedo scusa , come connettore java a mysql ho :
    mysql-connector-java-5.1.21-bin.jar ;
    devo scompattarlo ?

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da gbu123
    chiedo scusa , come connettore java a mysql ho :
    mysql-connector-java-5.1.21-bin.jar ;
    devo scompattarlo ?
    Quel JAR va bene, non è necessario scompattarlo, ma devi includerlo nel CLASSPATH della tua applicazione, cosa che non stai facendo (vedendo l'errore che hai correttamente riportato nel post precedente).

    Hai due modi per farlo, a seconda del tipo di applicazione che hai:

    1) Se hai un'applicazione impacchettata in un JAR, devi fornire il CLASSPATH nel MANIFEST.MF del JAR

    2) Se hai un'applicazione composta da classi "sciolte", dovrai fornire il CLASSPATH da riga di comando usando l'opzione "-cp" del comando "java"

    Documentati sul CLASSPATH, che è una cosa fondamentale nella programmazione in Java e sul file MANIFEST dei JAR, altra cosa fondamentale quando le applicazioni cominciano a diventaer corpose e si cominciano ad usare i JAR.


    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

  8. #8
    grazie mille ,
    in realtà ho scompattato il jar e tutto ha funzionato , sono riuscito
    anche ad inserire , però voglio provare come mi hai consigliato ,

    ho controllato il file manifest.mf , ha molti package di input e di output ,
    sono stati preparati quando ho scompattato il jar ?
    se volessi ripartire da prima della scompattazione cancello tutto o
    solo i package ?
    grazie infinite
    ciao

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.