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

    Errore in script di connessione

    Ragazzi ho un problema... ho queste due classi (la prima è presa dalal pillola di LELE

    codice:
    /*
     * Classe dedicata alla gestione del Database.
     * Gestisce l'apertura e la chiusura della connessione col Database
     * Fornisce i metodi per l'esecuzione delle query sul Database
     */
    import java.sql.*;
    import java.util.Vector;
    
    public class Database {
       private String nomeDB;       // Nome del Database a cui connettersi
       private String nomeUtente;   // Nome utente utilizzato per la connessione al Database
       private String pwdUtente;    // Password usata per la connessione al Database
       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 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 = "";
       }
    
       // 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("")) {
    
                // Controllo se il nome utente va usato o meno per la connessione
                if (nomeUtente.equals("")) {
    
                   // La connessione non richiede nome utente e password
                   db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB);
                } else {
    
                   // La connessione richiede nome utente, controllo se necessita anche della password
                   if (pwdUtente.equals("")) {
    
                      // La connessione non necessita di password
                      db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB + "?user=" + nomeUtente);
                   } else {
    
                      // La connessione necessita della password
                      db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB + "?user=" + nomeUtente + "&password=" + pwdUtente);
                   }
                }
    
                // 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
       public void disconnetti() {
          try {
             db.close();
             connesso = false;
          } catch (Exception e) { e.printStackTrace(); }
       }
    
       public boolean isConnesso() { return connesso; }   // Ritorna TRUE se la connessione con il Database è attiva
       public String getErrore() { return errore; }       // Ritorna il messaggio d'errore dell'ultima eccezione sollevata
    }
    codice:
    public class TestDB{
    public static void main(String args[]){
    Database db = new Database("java");
    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 utente;" );
    
    // Stampiamo i risultati:
    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] );
       }
    }
    
    // Eseguo un aggiornamento sul campo 'nomecampo' della tabella Tbl:
    if ( !db.eseguiAggiornamento("UPDATE utente SET nome=modificato WHERE id>0;") ) {
       System.out.println("Errore nell'aggiornamento!");
       System.out.println( db.getErrore() );
    }
    
    // Ora chiudo la connessione col Database:
    db.disconnetti();
    }
    }
    Quando vado a compilare la prima mi da un errore del tipo:
    Note: Database.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    1 error
    Mentre con la seconda mi dice:

    C:\Documents and Settings\ale\Documenti\database>javac *.java
    TestDB.java:14: cannot find symbol
    symbol : class Vector
    location: class TestDB
    Vector v = db.eseguiQuery( "SELECT * FROM utente;" );
    ^
    Note: Database.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    1 error

    C:\Documents and Settings\ale\Documenti\database>
    Qualche suggerimento?
    [ SimplyMepis 8 ]Copyleft
    www.mepisitalia.org IL SITO ITALIANO UFFICIALE DI MEPIS
    www.salentomovida.it LA MOVIDA DEL SALENTO HA UN NUOVO PUNTO D'INCONTRO SUL WEB
    [ SUD SOUND SYSTEM MINA FUECU INTRA ALLU SALENTU ]

  2. #2
    ok ragazzi ho sistemato aggiungendo

    import java.util.Vector;

    al TestDB.java


    Solo che ora mi da errore nella connessione del database!!...

    io ho preso il file .jar e l'ho copiato in /java/lib/ext ...
    [ SimplyMepis 8 ]Copyleft
    www.mepisitalia.org IL SITO ITALIANO UFFICIALE DI MEPIS
    www.salentomovida.it LA MOVIDA DEL SALENTO HA UN NUOVO PUNTO D'INCONTRO SUL WEB
    [ SUD SOUND SYSTEM MINA FUECU INTRA ALLU SALENTU ]

  3. #3
    Novita'...ho scompattato il jar nella directory delle .class

    Ora compila (continua a darmi il problema su Database.java ma lo compila..) ma quando eseguo il TestDB.java il cursore si ferma e non va avanti...
    [ SimplyMepis 8 ]Copyleft
    www.mepisitalia.org IL SITO ITALIANO UFFICIALE DI MEPIS
    www.salentomovida.it LA MOVIDA DEL SALENTO HA UN NUOVO PUNTO D'INCONTRO SUL WEB
    [ SUD SOUND SYSTEM MINA FUECU INTRA ALLU SALENTU ]

  4. #4
    è tutto oggi ke sbatto...nessuno ha idea?
    [ SimplyMepis 8 ]Copyleft
    www.mepisitalia.org IL SITO ITALIANO UFFICIALE DI MEPIS
    www.salentomovida.it LA MOVIDA DEL SALENTO HA UN NUOVO PUNTO D'INCONTRO SUL WEB
    [ SUD SOUND SYSTEM MINA FUECU INTRA ALLU SALENTU ]

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.