H2: Tabelle angeblich nicht gefunden

chuvak

Erfahrenes Mitglied
Ich habe eine kleine Benutzerverwaltung programmiert und verwende dabei die Datebank H2 im eingebetteten Modus (embedded mode).
Auf meinem Computer funktioniert auch alles, wenn ich die Andwendung jedoch auf einem fremden Rechner ausführen möchte, erscheint folgender Fehler:
SQLException: Table "CUSTOMERS" not found.
Ich bin mir aber sicher, dass die Tabelle existiert, weil exakt dieselbe Anwendung auf meinem Rechner ja funktioniert.

In der IDE habe ich die h2-1.3.162.jar unter "Libraries" hinzugefügt, beim Export auf einen anderen Rechner nehme ich sie natürlich im Unterverzeichnis "lib" mit.
Ich könnte ja verstehen, wenn er keine Verbindung aufbauen würde, aber er liefert ja nur den Fehler, dass die Tabelle nicht gefunden werden konnte...
Java:
    String dbClass = "org.h2.Driver";
    String dbDriver = "jdbc:h2:~/cc";
    String user = "user1";
    String pass = "test1";

    public void connect() {
        //load driver
        try {
            Class.forName(dbClass).newInstance();
            System.out.println("driver loaded");
        } catch (Exception ex) {
            System.out.println("error loading driver");
            System.err.println(ex);
        }
        // Connection
        try {
            conn = DriverManager.getConnection(dbDriver, user, pass);
            System.out.println("connected");
        } catch (SQLException ex) {
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
        }
    }

Ich hoffe, jemand kann mir helfen.
 
Hi,
diese Tabelle hast du doch aber an deinem PC auch irgendwann mal angelegt. Oder legst du die DB mit Tabellen, etc. über das Programm an?
Wenn nicht, dann wird die Tabelle auch nicht auf dem anderen PC existieren, weil sie vorher nicht angelegt wurde.

Gruß

Fabio
 
Ja, die Tabelle habe ich mit Hilfe von Netbeans angelegt. In meinem Home-Ordner wurde auch die entsprechende *.db- Datei erstellt.
Wo muss ich sie denn hinkopieren, wenn ich das gesamte Projekt exportieren möchte?
 
Wahrscheinlich ist es am besten die *.db-Datei direkt neben der Klasse (die die DB-Connection aufbaut) abzulegen. Da beim Export der Src-Ordner und ein META-INF Ordner nur in der Jar-Datei eingebunden werden.
Du könntest die db-Datei natürlich auch ins META-INF Verzeichniss legen, allerdings kann ich dir nicht genau sagen, wie du da dann (wenn du das Projekt als Jar-Datei hast) darauf zugreifen kannst.
 
Ich habe die *.db-Datei sowohl in den Hauptordner meine Projektes, als auch in den lib-Unterordner (mit der *.jar-Datei) kopiert, jedoch leider ohne Erfolg.
Muss ich im Quellcode irgendwie den Pfad dazu angeben? Es wird ja danach jeweils im Home-Ordner gesucht.
 
Ja den musst du natürlich ändern.
Wenn du die db-Datei ins src-Verzeichniss legst, kannst du so auf die Datei zugreifen.
Java:
URL url = getClass().getResource(dbFilename);
File file = new File(url.toURI());
Wie das bei dem META-INF Verzeichniss funktioniert kann ich dir leider nicht sagen.
 
Zurück