¿Cómo configurar derby.database.classpath para ejecutar Java DB Embedded?

He estado buscando documentos sobre este problema similar todo el día, pero parece que no puedo encontrar la respuesta. Encontré fácilmente una base de datos en un modo de cliente de servidor (org.apache.derby.jdbc.ClientDriver), pero estaba confundido acerca de la base de datos resultante en modo incrustado (org.apache.derby.jdbc.EmbeddedDriver).

Todo parece estar bien, y la conexión a la base de datos es un éxito, pero siempre me da este error:

java.sql.SQLSyntaxErrorException: la tabla/vista 'APP.TABELJEMBATAN' no existe.

http://i1263.photobucket.com/albums/ii633/lindafitriani/javadb4.jpg

Mi base de datos existe, ver a continuación:

http://i1263.photobucket.com/albums/ii633/lindafitriani/javadb1.jpg
http://i1263.photobucket.com/albums/ii633/lindafitriani/javadb2.jpg

Aquí está el contenido de mi archivo derby.log:

2012-06-30 18:08:34.170 GMT: Booting Derby version The Apache Software Foundation - Apache Derby - 10.5.3.0 - (802917): instancia a816c00e-0138-3e94-78a3-000000b35a08 en el directorio de la base de datos C:\Users\Linda Fitriani\Documentos\NetBeansProjects\Jembatan\Jembatan2

Se inició el cargador de clases de base de datos - derby.database.classpath=''

http://i1263.photobucket.com/albums/ii633/lindafitriani/javadb3.jpg

La ubicación de la base de datos es correcta (en mi directorio de trabajo), pero derby.database.classpath estaba vacío... ¿Alguien sabe cómo solucionarlo?

Aquí está mi código:

package jembatan;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
 *
 * @author Linda Fitriani
 */
public class DBConnect {
        private static Connection conn;
    private static String url = "jdbc:derby:Jembatan2;create=true;";
    private static String user = "APP";
    private static String pass = "linda";

    public static Connection connect() throws SQLException{
        try{
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
        }catch(ClassNotFoundException cnfe){
            System.err.println("Error: ClassNotFoundException"+cnfe.getMessage());
        }catch(InstantiationException ie){
            System.err.println("Error:InstantiationException"+ie.getMessage());
        }catch(IllegalAccessException iae){
            System.err.println("Error:IllegalAccessException"+iae.getMessage());
        }

        conn = DriverManager.getConnection(url,user,pass);
        return conn;
    }
    public static Connection getConnection() throws SQLException, ClassNotFoundException{
        if(conn !=null && !conn.isClosed())
            return conn;
        connect();
        return conn;

    }
}


private void buildData(){

          Connection c ;
          data = FXCollections.observableArrayList();
          try{
              c = DBConnect.connect();
            //SQL FOR SELECTING ALL OF APP.TABELJEMBATAN
            String SQL = "select * from APP.TABELJEMBATAN";
            //ResultSet
            ResultSet rs = c.createStatement().executeQuery(SQL);

            /**********************************
             * TABLE COLUMN ADDED DYNAMICALLY *
             **********************************/

            for(int i=0 ; i<rs.getMetaData().getColumnCount(); i++){
                //We are using non property style for making dynamic table
                final int j = i;                
                TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i+1));
                col.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){                    
                    public ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {                                                                                              
                        return new SimpleStringProperty(param.getValue().get(j).toString());                        
                    }                    
                });

                tableview.getColumns().addAll(col); 
                col.setMinWidth(200);
                System.out.println("Column ["+i+"] ");
            }

            /********************************
             * Data added to ObservableList *
             ********************************/
            while(rs.next()){
                //Iterate Row
                ObservableList<String> row = FXCollections.observableArrayList();
                for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){
                    //Iterate Column
                    row.add(rs.getString(i));
                }
                System.out.println("Row [1] added "+row );
                data.add(row);

            }

            //FINALLY ADDED TO TableView
            tableview.setItems(data);
          }catch(Exception e){
              e.printStackTrace();
              System.out.println("Error on Building Data");             
          }

      }

preguntado el 30 de junio de 12 a las 20:06

¿Alguien quiere responder cómo configurar derby classpath? cualquier ayuda sería muy apreciada -

3 Respuestas

encontré la solución...

el modo incrustado crea una base de datos en el directorio de instalación de cleanbeans ... entonces, solo apunto a

"jdbc:derby:C:/Users/Linda Fitriani/.netbeans/7.1/derby/databaseJembatan;create=false;"

es por eso que la aplicación no encuentra la base de datos, las bases de datos están en el directorio de instalación de netbeans.

Respondido 01 Jul 12, 06:07

solo asegúrese de agregar create=true dentro de la URL de conexión de la base de datos y asegúrese de que la url se refiera al directorio donde se encuentra la base de datos. Especifica la ruta de clase que debe usar Derby al buscar archivos jar en una base de datos. sus bibliotecas de proyectos

y la próxima vez que ejecute la aplicación, notará que no debe iniciar el servidor nuevamente y cuando copie los archivos jar a otra ubicación, asegúrese de que el directorio (lib) lo incluya

Espero que le ayudará

Respondido el 10 de diciembre de 14 a las 22:12

También me encontré con un problema diferente (no se pueden mostrar tablas en Hive) pero con el MISMO mensaje de registro después de instalar Hive y Derby

Finalmente me di cuenta de que el problema de propiedad (hduser debe ser otorgado como propietario de las carpetas de colmena...).e

Respondido 09 Jul 18, 16:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.