# EmbeddedDriver Problem



## Nuiton (22. Nov 2016)

Um es kurz zu halten: Ich habe eine Datenbank (Java DB, Embedded Driver), und versuche derzeit auch "nur" Daten aus einer Tabelle auszulesen. 

Das Problem ist, dass ich nur die "SYS"-Tabellen aus der "SYS"-Schematik anzeigen kann, aber nicht Tabellen die z.B. in der Schematik "APP" zu finden sind. Ein Beispiel sieht ihr hier:

*Alles funktioniert, keine Exception*:






*Nichts funktioniert, Exception*:





Ich bin schon so langsam am verzweifeln.


----------



## Thallius (23. Nov 2016)

Ich würde raten, dass dein hier nicht gezeigter Code sich mit der Datenbank "Other Schemas" verbindet.  Deshalb hat er natürlich nich lange keine zugriff auf die Datenbak APP.

BTW. Ich hoffe du bastelst da nicht tatsächlich mit echten Patientendaten rum. Programme die das machen benötigen eine Validierung gemäß Medizinproduktegesetzt. Eine nicht Einhaltung kann in schweren Fällen sogar strafrechtlich verfolgt werden.

Also Obacht was du da tust...

Gruß

Claus


----------



## Nuiton (27. Nov 2016)

Das sind alles Mockdatenbanken. Die folgende hab' ich jetzt auch mit Nutzername und Passwort erstellt, und ich hab' das jetzt mit mehreren Datenbanken reproduzieren koennen, bzw. neue angelegt, Tabellen erstellt, und bekomme immer einer dieser beiden Exceptions, eine davon auch

```
Exception in thread "main" java.sql.SQLSyntaxErrorException: Schema 'ALEX' does not exist
```

Auch wenn ich in der Standart-Schema bleibe, bzw. Schema "APP", bekomme ich die gleiche Exception.

Alle SQL-Statements hab' ich auch in der Konsole, bzw. JavaDB-Konsole getestet, und alles hat funktioniert.

Hier noch mal ein Ausschnitt:


Spoiler











*DBConnect.java*

```
package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;

public class DBConnect
{
    public static final String dbURL = "jdbc:derby:pet;create=true";
    public static String tableName;
    public static Connection conn = null;
    public static Statement stmt = null;
  
    public static void createConnection()
    {
        try
        {
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
            conn = DriverManager.getConnection(dbURL,"ALEX","pw");
        }
        catch (Exception except)
        {
            except.printStackTrace();
        }
    }
  
}
```

*Database.java*

```
package db;

import static db.DBConnect.conn;
import static db.DBConnect.createConnection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Database
{
    public static void selectCategories() throws SQLException
    {
        createConnection();
        String query = "SELECT * FROM ALEX.PET";
        ResultSet rs = conn.createStatement().executeQuery(query);
      
        if (!rs.next())
        {   
            System.out.println("No data");
        }
      
        else
        {
            do
            {
                String catName = rs.getString("NAME"); 
                System.out.println(catName);
            }
            while (rs.next());
        }
      
        if (conn!=null)
            conn.close();

      
    }
}
```

*Pet.java*

```
package gui;

import db.Database;
import java.sql.SQLException;

public class Pet
{
    public static void main(String args[]) throws SQLException
    {
        Database.selectCategories();
    }
}
```


----------



## Nuiton (29. Nov 2016)

Das Problem besteht weiterhin. Ich habe mich beschlossen eine andere Alternative zu nutzen - die H2 Embedded Datenbank.

Nach langer Internetsuche sieht's wohl so aus, als ob Embedded Derby sau viele Bugs hat (vor allem auch NetBeans) - aber das fuer ein anderes Thema.

Wenn die Anfrage besteht, waere ich auch dazu bereit ein kleines Tutorial dazu zu schreiben, bzw. wie man mit NetBeans eine Embedded (eingebundene, portable) Datenbank mit H2 erstellt, und leicht Daten abfragen/bearbeiten oder loeschen kann.


----------



## Thallius (29. Nov 2016)

Dann hätte ich doch gleich Sqlite genommen.


----------



## Nuiton (29. Nov 2016)

Werde ich dann eventuell mal in einem weiteren Projekt benutzen.


----------



## mrBrown (29. Nov 2016)

Warum sollte man SQLite statt H2 nutzen?


----------

