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

    Errore connessione JavaDb con eclipse

    Scusate ragazzi ho un grosso problema.

    Ho deciso di utilizzare come database per la mia applicazione un database JavaDb in maniera tale da poterlo integrare con la mia applicazione e renderla portabile al massimo integrando tutto al suo interno.

    Ho scaricato il driver Derby.jar

    ma sto avendo dei grossi problemi ho seguito diverse guide su come creare ild atabase con eclipse (utilizzo queto come ide) ma nietne il database l'ho creato ed ho creato anche una tabella ma ho dei problemi nel collegare la mia appicazione al database.

    codice:
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Vector;
    
    import javax.swing.JTable;
    
    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 static Connection db;       // La connessione col Database
       private boolean connesso;    // Flag che indica se la connessione è attiva o meno
       private String[][] cells = null;
       private String[] columnsName=null;
       public Database(String nomeDB) { this(nomeDB, "", ""); }
       public JTable tabella;
       public Database(String nomeDB, String nomeUtente, String pwdUtente) {
          this.nomeDB = nomeDB;
          this.nomeUtente = "bircastri271187";
          this.pwdUtente = "pentathlon271187";
          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("org.apache.derby.jdbc.EmbeddedDriver");
    
             // 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
                	Connection dbConnection = null;
                	String strUrl = "jdbc:derby:ICECREAM;user=dbuser;password=dbuserpwd";
                	try {
                	    dbConnection = DriverManager.getConnection(strUrl);
                	} catch (SQLException sqle) {
                	    sqle.printStackTrace();
                	}
    
                } 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:derby://localhost:1527/" + nomeDB + "?user=" + nomeUtente);
                   } else {
                	   db = DriverManager.getConnection("jdbc:derby://localhost:1527/ICECREAM" +  " user "+"bircastri271187" +" password "+ "pentathlon271187");
                      // La connessione necessita della password
                	/*   Connection dbConnection = null;
                	   String strUrl = "jdbc:derby:ICECREAM;user=dbuser;password=dbuserpwd";
                	   try {
                	       dbConnection = DriverManager.getConnection(strUrl);
                	   } catch (SQLException sqle) {
                	       sqle.printStackTrace();
                	   }*/
    
    
                   }
                }
    
                // 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;      
    	      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();
    	         //rsmd = rs.getMetaData();
    	         colonne = rsmd.getColumnCount();
    	//qualche modifica qui, in modo che si lavori su Vector piuttosto
    	//che su String[]
    	         while(rs.next()) {   // Creo il vettore risultato scorrendo tutto il ResultSet
    	            Vector record = new Vector();
    	            for (int i=0; i<colonne; i++) {
    	                record.add(rs.getString(i+1));
    	            }
    	            v.add(record);
    	         }
    	         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;
       }
       //metodo aggiunto da me
       public int getRowCount() {
    	   
    	   return cells.length;
    	   }
       //metodo aggiunto da me
       public int getColumnCount() {
    	   
    	   return columnsName.length;
    	   }
       //metodo aggiunto da me
       public Object getValueAt(int r, int c)
       {
       return (String)cells[r][c];
       }
       //metodo aggiunto da me
       public String getColumnName(int c)
       {
       return columnsName[c];
       }
    
       // 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
    }
    mi potete dare una mano l'errore che mi da eclipse é:No suitable driver found for jdbc:derby://localhost:1527/ICECREAM user bircastri271187 password pentathlon271187

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    scusa la domanda (forse stupida) ma senza il codice riesci ad accedere al db? Prendi qualcosa tipo squirrel (un db visualizer) e prova la connessione alla stessa stringa

  3. #3
    Allora ho effettuato questa modifica

    db = DriverManager.getConnection("jdbc:derby:C:\\Users\ \Michele\\ICECREAM;create=true");

    cambiando praticamente il percorso.

    Però non so se questa modifica consente di creare il database oppure di collegarmi.


    Altro quesito io ho utilizzato javaDB poichè il mio intento è quello di avere il database e l'applicazione in un unico file o cartella in manira tale che posso lavorare anche su una pen drive e il pc sul quale viene letta la penna deve avere solo la JVM e buonanotte il software diventa portabile al massimo.

    Adesso la domanda è come faccio a mettere database nello stesso file se lo posso prendere solo da quel percorso???

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Che intendi stesso file? In un jar? e come gestisci le modifiche al database? Che tu voglia mettere tutto nello stesso progetto potrebbe andare bene, ma cosa distribuisci?
    Poi tu hai indicato un path (schiantato così è brutto, fallo almeno relativo) a cui ti colleghi per poter fare i tuoi mestieri.
    Ora prova a mettere il file in un altro percorso, aggiornare il path e provare a collegarti.

  5. #5
    Allora per stesso file io intendo una cosa del genere:

    Io prima utilizzavo come database MySql con la classe Database trovata nelle pillole di questo sito.

    Tutto alla perfezione se non fosse pr il fatto che se un utente vuole utilizzare l'applicazione, deve avere per forza il server MySql installato con il database creato. Inoltre se vuole utilizzare il programma su un altro pc che non MySql e quel database caricati anche se riesce ad aprire in java l'applicazione non può fare nulla per i motivi che sappiamo.

    Allora la mia idea facendo domande e contrrodomande, leggendo svariati post è quella di utilizzare javaDb in maniera tale che mettendo tutto all'interno di uno stesso jar, di una stessa cartella l'utente che ha il programmino ad esempio su una pen drive in qualsiasi pc va attacca la penna ed ha tutti i suoi dati dietro e può fare quello che gli pare insomma.

    Ecco io adesso siccome è la prima volta che faccio questo volevo capire come potevo ottenere ciò.

    Mi ptoete dare unaiuto????

    grazie mille

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ho capito e puoi farlo.
    Ma ti faccio una domanda: se io aggiungo una riga al database, tu come fai? Rigeneri il jar? Perdi la modifica?
    Puoi fare anche un piccolo script di configurazione (scelta che adotto) in modo da crearti in una tua locazione la roba che serve (e portarti dietro una cartella e non solo un jar)

  7. #7
    Ah e vedi io non l'ho mai fatto e quindi non so vedo cmq che hai centrato il mio obiettivo si per me va bene anche una cartella in cui ho il database diciamo e poi un jar o un exe che lo va a richiamare.

    L'utente sicuramente deve aggiungere e modificare le righe del mio database visto che sto sviluppando un software gestionale.

    Quindi mi puoi dare un aiutino Valila????

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    hai mai fatto piccoli script?
    Allora devi portarti dietro tutto: le librerie per il database, poi crei uno script .bat (sei su windows), .sh se sei su linux che crea il tuo database (crea il db e le tabelle e inserisce, se necessario, i primi valori)

    Prendi come root la directory in cui ti trovi.
    Fai intanto questo, la tua connessione java si riferirà sempre a quella locazione (facilmente accessibile)

  9. #9
    Allora aspetta un attimo questi script io non li ho mai fatti ma c'è sempre tempo per imparare.

    Io innanzitutto voglio che la mia applicazione deve funzionare sia in mac che in windows che in linux.

    Poi io voglio fornire all'utente una cartella in cui c'è il programma con una serie di dati già caricati.

    Mi puoi fare un esempio iniziamo col partire da qulcosa tipo la connessione al database oppure la semplice creazione dello script. (per windows per il momento).

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Originariamente inviato da bircastri
    Allora aspetta un attimo questi script io non li ho mai fatti ma c'è sempre tempo per imparare.
    Non necessiti di nessuno script

    Io innanzitutto voglio che la mia applicazione deve funzionare sia in mac che in windows che in linux.
    JavaDB è scritto in Java ed è portabile, quindi non hai problemi.

    Poi io voglio fornire all'utente una cartella in cui c'è il programma con una serie di dati già caricati.
    Allora dovrai avere una cartella con la tua applicazione, tutte le librerie che lei utilizza (compreso il pacchetto di JavaDB) e una directory contenente il database di partenza (precedentemente creato da te... anche i DB sono portabili)

    Mi puoi fare un esempio iniziamo col partire da qulcosa tipo la connessione al database oppure la semplice creazione dello script. (per windows per il momento).
    La url connection:

    codice:
    jdbc:derby:nomeDelDatabase;user=nome utente;password=password utente
    nomeDelDatabase: il nome del DB da creare... verrà creata una directory con quel nome
    nome utente: il nome utente da usare per la connessione
    password utente: la password dell'utente

    Ovviamente l'esempio sottintende che tu hai già creato le policy di accesso al DB. Prima di usare JavaDB, comunque, è necessario leggere il manuale che trovi on-line... ci sono diverse cosucce da tenere conto.


    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

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.