Visualizzazione dei risultati da 1 a 4 su 4

Discussione: NetBeans + Derby

  1. #1

    NetBeans + Derby

    Ciao a tutti! Oggi ho un quesito interessante da proporre: derby+ netBenas

    Praticamente devo gestire una serie di dati ed è molto comodo per me usare un DB incorporato nel programma, fatto qualche ricerca e ho scoperto Derby, ho anche scoperto che net Benas lo implementa nativamente (EVVIVA!!)

    Adesso.... ho creato le tabelle con net Beans con una connessione a "jdbc:derby://localhost:1527/Ship_simulator"

    poi ho creato una classe che gestisce connessione e disconnessione al DB tramite i metodi

    codice:
     // VARIABILI GLOBALI PER GESTIRE ERRORE 
        public static String Errore = null;
        public static boolean stato = true;
        // VARIABILI gesione connessione
        private static String dbURL = "Ship_simulator";
        private static String user = "ship";
        private static String pass = "simulator";
        private static Connection conn = null;
        private static Statement stmt = null;
        //----- connessione al DB --------------
     private static boolean connetti(){
           try{
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); 
           } catch(Exception e) {
                Errore = "Errore nel caricamento del DB: " + e.getMessage();
                return false;
           }
           try {
               conn = DriverManager.getConnection("jdbc:derby:"+dbURL+";create=true",user,pass);
           }catch (Exception e){
               Errore = "Errore di connessione: " + e.getMessage();
               return false;
           }
           return true;
        }
         private static boolean shutdown(){
            try{
                if (stmt != null) stmt.close();
                if (conn != null){
                    conn = DriverManager.getConnection("jdbc:derby:"+ dbURL + ";shutdown=true",user,pass);
                    conn.close();
                }           
            } catch (SQLException e){
                /* TODO Attenzione, stando a quanto detto nel forum il 
                 * DB è disconnesso ma lo vede come errore
                 */
                e.printStackTrace();
                return true;
            }
            return true;
        }
    Ed ho eseguito questa semplice classe
    codice:
    public static void prova(){
            connetti();
            try {
                System.out.println("Schema: " + conn.getSchema());
                PreparedStatement mio = conn.prepareStatement("SELECT ID FROM MARE");
                mio.executeQuery();
                ResultSet set=mio.getResultSet();
                while(set.next()){
                    System.out.println(set.getString(1));
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            shutdown();
        }
    ma l'output è questo
    codice:
    Schema: SHIP
    java.sql.SQLSyntaxErrorException: lo schema 'SHIP' non esiste.
    	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
    	at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
    	at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
    	at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
    	at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
    	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
    	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown Source)
    	at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown Source)
    	at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown Source)
    	at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.<init>(Unknown Source)
    	at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown Source)
    	at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    	at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    	at wave.simulator.tabelle.DB.prova(DB.java:214)
    	at wave.simulator.WaveSimulator.main(WaveSimulator.java:20)
    Caused by: java.sql.SQLException: lo schema 'SHIP' non esiste.
    	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
    invece se metto private static String dbURL = "//localhost:1527/Ship_simulator"; tutto va bene, così però il DB non risulta embedded.
    Net Beans inoltre mi impedisce di creare una DB nella posizione (embdded) jdbc:derby:Ship_simulator

    Aiuto! Devo risolvere questo problema altrimenti il programma (tutto) è da buttare!!

  2. #2
    Non serve istanziare un oggetto della classe del Driver, basta caricare solo il class, quindi togli il newInstance

    codice:
    Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance()
    Devi creare un DB embedded (l'ho chiamato prova_db) scegliendo il path che vuoi (io ho scelto C:\derby_db), poi prova a connetterti con una stringa tipo

    codice:
    jdbc:derby:C:\\derby_db\\prova_db
    senza usare hostname e porta altrimenti ti connetti in server mode, e senza create=true per adesso così se c'è qualche problema di connessione lo vedremo invece di forzare la creazione del db.
    lolide
    Java Programmer

    Informati

  3. #3
    Allora eccomi! no no no evevo sbagliato tutto e in più su internet non c'è un adeguato tutorial sull'uso di DERBY + JAVA, scriverò qualcosa in merito!! La procedure è più complicata di quanto possa sembrare!

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da Lory1990
    Allora eccomi! no no no evevo sbagliato tutto e in più su internet non c'è un adeguato tutorial sull'uso di DERBY + JAVA, scriverò qualcosa in merito!! La procedure è più complicata di quanto possa sembrare!
    Io la documentazione di JavaDB l'ho trovata più che esauriente. Inoltre, con Google ho trovato molteplici esempi d'uso.

    Ad ogni modo, se vorrai scrivere qualcosa ben venga... si può sempre pensare di integrare con una pillola.


    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.