Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Errore durante la connessione. com.mysql.jdbc.Driver

    Ciao, ho un problema poichè il mio programma mi restituisce l'errore in oggetto:
    Classe Database:
    codice:
    package miodb;
    import java.sql.*;
    import java.util.Vector;
    
    
    
    
    public class Database {
    
       private String nomeDB;      
       private String nomeUtente;  
       private String pwdUtente;    
       private String errore;      
       private Connection db;      
       private boolean connesso;  
       public Database(String nomeDB) { this(nomeDB, "", ""); }
    
       public Database(String nomeDB, String nomeUtente, String pwdUtente) {
          this.nomeDB = nomeDB;
          this.nomeUtente = nomeUtente;
          this.pwdUtente = pwdUtente;
          connesso = false;
          errore = "";
       }
    
    
       public boolean connetti() {
          connesso = false;
          try {
            
             Class.forName("com.mysql.jdbc.Driver").newInstance();
    
             if (!nomeDB.equals("")) {
    
               try{
                  db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB + "?user=" + nomeUtente + "&password=" + pwdUtente);
               }catch(SQLException ex){
                        System.out.println("SQLException: " + ex.getMessage());
                        System.out.println("SQLState: " + ex.getSQLState());
                        System.out.println("VendorError: " + ex.getErrorCode());
                        }
                connesso = true;
             } else {
                System.out.println("Manca il nome del database!!");
                System.out.println("Scrivere il nome del database da utilizzare all'interno del file \"config.xml\"");
                System.exit(0);
             }
          } catch (Exception e) { errore = e.getMessage(); }
          return connesso;
       }
       public Vector eseguiQuery(String query) {
          Vector v = null;
          String [] record;
          int colonne = 0;
          try {
             Statement stmt = db.createStatement();    
             ResultSet rs = stmt.executeQuery(query);  
             v = new Vector();
             ResultSetMetaData rsmd = rs.getMetaData();
             colonne = rsmd.getColumnCount();
    
             while(rs.next()) {  
                record = new String[colonne];
                for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
                v.add( (String[]) record.clone() );
             }
             rs.close();    
             stmt.close();
          } catch (Exception e) { e.printStackTrace(); errore = e.getMessage(); }
    return v;
       }
    
       public boolean eseguiAggiornamento(String query) {
          int numero = 0;
          boolean risultato = false;
          try {
             Statement stmt = db.createStatement();
             numero = stmt.executeUpdate(query);
             risultato = true;
             stmt.close();
          } catch (Exception e) {
             e.printStackTrace();
             errore = e.getMessage();
             risultato = false;
          }
          return risultato;
       }
       public void disconnetti() {
          try {
             db.close();
             connesso = false;
          } catch (Exception e) { e.printStackTrace(); }
       }
    
       public boolean isConnesso() { return connesso; }  
       public String getErrore() { return errore; }      
    }
    e il main :

    codice:
    package miodb;
    import java.sql.*;
    import java.util.Vector;
    
    
    
    public class Main{
      public static void main(String[] args){
        
    Database db = new Database("nomedb","username","");
    if ( !db.connetti() ) {
       System.out.println("Errore durante la connessione.");
       System.out.println( db.getErrore() );
       System.exit(0);
    }
    
    
    Vector v = db.eseguiQuery( "SELECT * FROM miatabella;" );
    
    int i = 0;
    while ( i<v.size() ) {
       String[] record = (String[]) v.elementAt(i);
       System.out.println("Record numero " + (i+1) );
       for (int j=0; j<record.length; j++) {
          System.out.println( record[j] );
       }
    }
    db.disconnetti();
    
      }
    }

    Cosa devo fare?

    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    143
    1-Hai provato a fare un debug per vedere in che punto genera l'errore?
    2-sei sicura che la stringa di connessione al db sia corretta?
    3-di preciso l'errore cosa dice?

  3. #3
    Innanzitutto grazie per la risposta:

    1) Facendo il "Debug project" ottengo:
    Listening on 2706
    User program running
    User program finished
    2) un dubbio:
    se non ho la password come devo settare la riga
    public Database(String nomeDB, String nomeUtente, String pwdUtente)?
    Devo lasciar gli apici, giusto?
    3)l'errore è:
    init:
    deps-jar:
    compile:
    run:
    Errore durante la connessione.
    com.mysql.jdbc.Driver
    BUILD SUCCESSFUL (total time: 0 seconds)

    Grazie ancora

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    143
    1) per la pwd nulla penso che vadano bene gli apici.
    2) la stringa di connessione al DB non mi piace proprio ... quei punti interrogativi li hai presi da qualche pagina di documentazione?

    nella documentazione Sun il metodo getConnection riceve 3 parametri in ingresso, tu concatenando varie stringhe gliene fornisci solo uno ...

  5. #5
    Supponiamo che il nome del db sia NOMINATIVODB (che contiene NOMINATIVOTABELLA, e l'username sia root e non ci sia la pwd.
    il main sarebbe corretto così:
    i
    codice:
    import java.sql.*; import java.util.Vector;    public class Main{   public static void main(String[] args){      Database db = new Database("NOMINATIVODB","root",""); if ( !db.connetti() ) {    System.out.println("Errore durante la connessione.");    System.out.println( db.getErrore() );    System.exit(0); }  // Eseguo una query sul database. La tabella si chiama Tbl. Vector v = db.eseguiQuery( "SELECT * FROM NOMINATIVOTABELLA;" );  int i = 0; while ( i<v.size() ) {    String[] record = (String[]) v.elementAt(i);    System.out.println("Record numero " + (i+1) );    for (int j=0; j<record.length; j++) {       System.out.println( record[j] );    } }  // Ora chiudo la connessione col Database: db.disconnetti();    }  }
    e la classe Database così:

    codice:
    import java.sql.*; import java.util.Vector;   public class Database {     private String nomeDB;           private String nomeUtente;       private String pwdUtente;        private String errore;           private Connection db;           private boolean connesso;         public Database(String nomeDB) { this(nomeDB, "", ""); }     public Database(String nomeDB, String nomeUtente, String pwdUtente) {       this.nomeDB = "NOMINATIVODB";       this.nomeUtente = "root";       this.pwdUtente = "";       connesso = false;       errore = "";    }     // 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").newInstance();           // Controllo che il nome del Database non sia nulla          if (!nomeDB.equals("")) {             try{               // La connessione necessita della password               db = DriverManager.getConnection("jdbc:mysql://localhost/" + "NOMINATIVODB" + "?user=" + "root" + "&password=" + "");            }catch(SQLException ex){                     System.out.println("SQLException: " + ex.getMessage());                     System.out.println("SQLState: " + ex.getSQLState());                     System.out.println("VendorError: " + ex.getErrorCode());                     }             // La connessione è avvenuta con successo             connesso = true;          } else {             System.out.println("Manca il nome del database!!");             System.out.println("Scrivere il nome del database da utilizzare all'interno del file \"config.xml\"");             System.exit(0);          }       } catch (Exception e) { errore = e.getMessage(); }       return connesso;    }      // Esegue una query di selezione dati sul Database    // query: una stringa che rappresenta un'istruzione SQL di tipo SELECT da eseguire    // colonne: il numero di colonne di cui sarà composta la tupla del risultato    // ritorna un Vector contenente tutte le tuple del risultato    public Vector eseguiQuery(String query) {       Vector v = null;       String [] record;       int colonne = 0;       try {          Statement stmt = db.createStatement();     // Creo lo Statement per l'esecuzione della query          ResultSet rs = stmt.executeQuery(query);   // Ottengo il ResultSet dell'esecuzione della query          v = new Vector();          ResultSetMetaData rsmd = rs.getMetaData();          colonne = rsmd.getColumnCount();           while(rs.next()) {   // Creo il vettore risultato scorrendo tutto il ResultSet             record = new String[colonne];             for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);             v.add( (String[]) record.clone() );          }          rs.close();     // Chiudo il ResultSet          stmt.close();   // Chiudo lo Statement       } catch (Exception e) { e.printStackTrace(); errore = e.getMessage(); }        return v;    }     // Esegue una query di aggiornamento sul Database    // query: una stringa che rappresenta un'istuzione SQL di tipo UPDATE da eseguire    // ritorna TRUE se l'esecuzione è adata a buon fine, FALSE se c'è stata un'eccezione    public boolean eseguiAggiornamento(String query) {       int numero = 0;       boolean risultato = false;       try {          Statement stmt = db.createStatement();          numero = stmt.executeUpdate(query);          risultato = true;          stmt.close();       } catch (Exception e) {          e.printStackTrace();          errore = e.getMessage();          risultato = false;       }       return risultato;    }     // Chiude la connessione con il Database

    Grazie

  6. #6
    Ho fatto la stringa di connessione così:

    db=DriverManager.getConnection("jdbc:mysql://localhost/", "root", "");

    ma mi dà lo stesso errore:

    Errore durante la connessione.
    com.mysql.jdbc.Driver


  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    143
    1) prima di postare fai una "Anteprima" per vedere se quello che hai scritto si legge bene

    2)la connection string non va bene

    codice:
     db = DriverManager.getConnection("jdbc:mysql://localhost/" + "NOMINATIVODB" + "?user=" + "root" + "&password=" + "");
    deve diventare qualcosa del genere

    codice:
     db = DriverManager.getConnection("jdbc:mysql://localhost/NOMINATIVODB",""root"","");
    E' pià chiaro e fai meno confusione. L'altro tipo di input secondo me non è ben chiaro. Se ho ben capito i valori vanno separati dai ":"

  8. #8
    1) Hai ragione, ci metterò più attenzione la prossima volta
    2) Fatto ma stesso errore.Il Blocco intero è così:
    try{
    db=DriverManager.getConnection("jdbc:mysql://localhost/NOMINATIVODB", "root", "") ;
    }catch(SQLException ex){
    System.out.println("SQLException: " + ex.getMessage());
    System.out.println("SQLState: " + ex.getSQLState());
    System.out.println("VendorError: " + ex.getErrorCode());
    }


  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    143
    Guarda ... a parte che ho verificato che anche la tua stringa di connessione era corretta ... per ora non so dove possa essere il problema, probabilmente è l'ora tarda che mi fa sfuggire l'errore. .. prova a googolare un pochino

  10. #10
    Innanzitutto grazie per il tuo aiuto. Mi sono dimenticata di dirti che uso NerBeans 4.1 , ho installato EasyPHP 1.8 e mysql-connector-odbc-3.51.12-win32.
    Da "Origine Dati (ODBC)" ho configurato come driver MySQL ODBC 3.51 Driver e l'ho impostato:

    Data Source Name: NOMINATIVODB
    Server: localhost
    user : root
    Database: NOMINATIVODB

    C'è qualche errore qui?
    Ho provato a cercare qualcosa su google ma talvolta le informazioni sono troppo complesse per le mia conoscenze
    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.