HSQLDB Verbindung schlägt fehl

Status
Nicht offen für weitere Antworten.

Onkel Hatti

Bekanntes Mitglied
Hallo Alle.

Ich benutze (möchte benutzen) eine HSQLDB (1.9) Datenbank.
Dazu benutze ich den Squirrel SQL Client und erstelle eine Datenbank.
Wenn das passiert ist, komt eine .script Datei heraus:

Java:
SET DATABASE UNIQUE NAME HSQLDB23C3C92AF9
SET DATABASE GC 0
SET DATABASE DEFAULT RESULT MEMORY ROWS 0
SET DATABASE EVENT LOG LEVEL 0
SET DATABASE SQL SIZE TRUE
SET DATABASE SQL NAMES FALSE
SET DATABASE TRANSACTION CONTROL LOCKS
SET FILES WRITE DELAY 10
SET FILES BACKUP INCREMENT TRUE
SET FILES CACHE SIZE 10000
SET FILES CACHE ROWS 50000
SET FILES SCALE 8
SET FILES DEFRAG 20
SET FILES NIO TRUE
SET FILES LOG SIZE 50
SET DATABASE TEXT TABLE DEFAULTS ''
SET DATABASE COLLATION "English"
CREATE USER SA PASSWORD ''
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
SET SCHEMA PUBLIC
CREATE CACHED TABLE PUBLIC.MEDIUMA(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1138) NOT NULL PRIMARY KEY,IDENTNR BIGINT NOT NULL,TITEL VARCHAR(255) NOT NULL,ANZAHL INTEGER NOT NULL,CONSTRAINT SYS_UN_108 UNIQUE(IDENTNR))
ALTER TABLE PUBLIC.MEDIUMA ALTER COLUMN ID RESTART WITH 1138
CREATE CACHED TABLE PUBLIC.MEDIUMB(IDENTNR BIGINT NOT NULL PRIMARY KEY,ORIGINALTITEL VARCHAR(255),PREIS DECIMAL(5,2),KAUFDATUM DATE,SPIELLAENGE TIME,SEITENZAHL INTEGER,FOREIGN KEY(IDENTNR) REFERENCES PUBLIC.MEDIUMA(IDENTNR) ON DELETE CASCADE ON UPDATE CASCADE)
...

Ich versuche mich über Java mit der HSQL Datenbank zu verbinden:

Java:
...
		try
		{
			Class.forName("org.hsqldb.jdbcDriver");
		}
		catch (ClassNotFoundException c)
		{
			return false;
		}
		try
		{
			Connection dbConn = DriverManager.getConnection("jdbc:hsqldb:file:"+databasename, "sa", "");
		}
		catch (SQLException s)
		{
			JOptionPane.showMessageDialog(null, "Error connecting to DB", "Error", JOptionPane.ERROR_MESSAGE);
			return false;
		}
...

Das schlägt fehl mit einer SQLException:

java.sql.SQLException: error in script file line: 1 user lacks privilege or object not found: FILES
at org.hsqldb.jdbc.Util.sqlException(Util.java:365)
at org.hsqldb.jdbc.Util.sqlException(Util.java:103)
at org.hsqldb.jdbc.JDBCConnection.<init>(JDBCConnection.java:3236)
at org.hsqldb.jdbc.JDBCDriver.getConnection(JDBCDriver.java:285)
at org.hsqldb.jdbc.JDBCDriver.connect(JDBCDriver.java:245)
at org.hk.dbframe.database.DataBaseHSQLDB.createConnection(DataBaseHSQLDB.java:78)
at org.hk.dbframe.gui.DBFrameStart.connectToDB(DBFrameStart.java:124)
at org.hk.dbframe.gui.DBFrameStart.<init>(DBFrameStart.java:91)
at org.hk.dbframe.gui.DBFrameStart.main(DBFrameStart.java:51)
Caused by: org.hsqldb.HsqlException: error in script file line: 1 user lacks privilege or object not found: FILES
at org.hsqldb.Error.error(Error.java:111)
at org.hsqldb.scriptio.ScriptReaderText.readDDL(ScriptReaderText.java:131)
at org.hsqldb.scriptio.ScriptReaderBase.readAll(ScriptReaderBase.java:88)
at org.hsqldb.persist.Log.processScript(Log.java:782)
at org.hsqldb.persist.Log.open(Log.java:189)
at org.hsqldb.persist.Logger.openLog(Logger.java:134)
at org.hsqldb.Database.reopen(Database.java:314)
at org.hsqldb.Database.open(Database.java:262)
at org.hsqldb.DatabaseManager.getDatabase(DatabaseManager.java:222)
at org.hsqldb.DatabaseManager.newSession(DatabaseManager.java:145)
at org.hsqldb.jdbc.JDBCConnection.<init>(JDBCConnection.java:3219)

Erstelle ich jedoch in Java (gleicher Connect-Befehl) eine HSQLDB Datenbank, dann sieht die .script Datei anders aus:

Java:
SET DATABASE COLLATION "English"
CREATE USER SA PASSWORD ''
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
SET SCHEMA PUBLIC
CREATE CACHED TABLE PUBLIC.MEDIUMA(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1138) NOT NULL PRIMARY KEY,IDENTNR BIGINT NOT NULL,TITEL VARCHAR(255) NOT NULL,ANZAHL INTEGER NOT NULL,CONSTRAINT SYS_UN_108 UNIQUE(IDENTNR))
ALTER TABLE PUBLIC.MEDIUMA ALTER COLUMN ID RESTART WITH 1138
CREATE CACHED TABLE PUBLIC.MEDIUMB(IDENTNR BIGINT NOT NULL PRIMARY KEY,ORIGINALTITEL VARCHAR(255),PREIS DECIMAL(5,2),KAUFDATUM DATE,SPIELLAENGE TIME,SEITENZAHL INTEGER,FOREIGN KEY(IDENTNR) REFERENCES PUBLIC.MEDIUMA(IDENTNR) ON DELETE CASCADE ON UPDATE CASCADE)
...

und die Anweisunge, die fehlen, stehen in der .properties Datei der Datenbank.

Jetzt die Frage:

Woran liegt es, daß ich mich mit der Datenbank nicht verbinden kann? Was mach ich falsch?
bzw. Squirrel kann sich mit der Datenbank problemlos verbinden. Was macht Squirrel anders?

Danke schon mal
Hatti
 
G

Gelöschtes Mitglied 5909

Gast
schlägt jetzt die verbindung fehl oder das script? sieht für mich eher aus als das skript?!?!?

und wieso versuchst du dieses skript auszuführen? das sind die anweisungen die hsql am anfang macht,
um die "systemtabellen" anzulegen. Die musst du nicht ausführen.

nehm die connection und erstell damit deine eigenen tabellen

Java:
package de.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class HSQLDB {

    public static void main( String[] args ) throws Exception {
        Class.forName("org.hsqldb.jdbcDriver");
        Connection connection = DriverManager.getConnection("jdbc:hsqldb:file:foo", "sa", "");
        PreparedStatement statement = connection.prepareStatement("CREATE TABLE FOO(ID INTEGER, BAR VARCHAR)");
        statement.execute();
        
        for ( int i = 0; i < 10; i++ ) {
            statement = connection.prepareStatement("INSERT INTO FOO VALUES(?, ?)");
            statement.setInt(1, i);
            statement.setString(2, ""+i);
            statement.execute();
        }
        statement = connection.prepareStatement("SELECT * FROM FOO");
        ResultSet query = statement.executeQuery();
        while( query.next() ) {
            System.out.println(query.getInt(1) + query.getString(2));
        }
    }

}

00
11
22
33
44
55
66
77
88
99

und machs nicht so unsauber wie ichs jetzt zum testen gemacht hab!
 

Onkel Hatti

Bekanntes Mitglied
Ja, das Script. Aber nicht ich rufe das auf, sondern HDSQLD arbeitet das Script ab, wenn ich versuche, mich an der Datenbank mittels

Connection connection = DriverManager.getConnection("jdbc:hsqldb:file:foo", "sa", "");

anzumelden. Warum auch immer. Ich kann das weder steuern noch verhindern. Und nicht ich scheitere somit an dem Eintrag (und damit an der Verbindung zur Datenbank), sondern HSQLDB.

Ich hab mir ein Java-Programm geschrieben, mit dem ich die Tabellen aus Java heraus erstelle und auch mit diversen Daten fülle. Das erstmal als Workaround. Das geht auch soweit gut.
Aber es gibt ja Programme wie Squirrel, die einem die Arbeit leichter machen. Und deshalb würde ich mich auch gerne an Datenbanken anmelden können, die von Squirrel erstellt worden sind. Das ist mit HSQLDB derzeit nicht möglich.

Hatti
 
S

stevetc

Gast
Hi,

ich hatte genau das gleiche Problem und ich habe es am Anfang auch nicht verstanden.
Die Lösung bei mir: Der JDBC-Treiber verschluckt bei der URL die Backslashes und findet so das Verzeichnis der angegeben Datenbankdatei "nicht" (verwendet man / dann funktioniert es).

Das gemeine an der Angelegenheit ist, dass, falls die Datenbankdatei noch nicht vorhanden ist, was bei einem falsch interpretierten Verzeichnis der Fall ist, einfach eine neue leere Datei angelegt und verwendet wird.
Ich habe also mit DbVisualizer eine Datenbank angelegt unter d:\temp\Demo und befüllt, sowie einen Benutzer angelegt.
Dann habe ich in meinem Java-Programm veruscht die Datenbank einzulesen mit:
jdbc:hsqldb:file:d:\temp\Demo

Jetzt macht der JDBC-Treiber jedoch daraus eine Datei dtempDemo und legt in dem aktuellen Projektverzeichnis eine neue Datenbankdatei mit diesem Namen an.
Klar, dass dann der Inhalt der eigentlichen bzw. der angelegte Benutzer nicht gefunden wird.
Mit:
jdbc:hsqldb:file:d:/temp/Demo
war es kein Problem.

Ich habe damit nicht gerechnet, da in vielen Tutorials, ein Beispiel mit Backslash verwendet wird.

Ich hoffe der Fehler bleibt jetzt dem ein oder anderen erspart.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Kann keine Verbindung mit HSQLDB aufbauen Datenbankprogrammierung 2
C Keine Verbindung zu HSQLDB möglich Datenbankprogrammierung 22
I HSQLDB HSQLDB 2.5.0 - Wie Loggen abstellen? Datenbankprogrammierung 4
B HSQLDB - auto_increment als unexpected token ? Datenbankprogrammierung 1
E Abfrage auf HSQLDB Datenbankprogrammierung 4
windl MySQL und HSQLDB Datenbankprogrammierung 4
D HSQLDB HSQLDB in PHP-Projekt einbinden? Datenbankprogrammierung 7
I Inhalt einer hsqldb anzeigen Datenbankprogrammierung 1
G java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver Datenbankprogrammierung 4
M HSQLDB oder DERBY - warum SCRIPT Datei? Datenbankprogrammierung 0
T Hibernate, HSQLDB und UNIQUE Datenbankprogrammierung 2
F hsqldb Fehler - unknown source Datenbankprogrammierung 11
E HSQLDB Eclipse + Geronimo + HSQLDB = org.hsqldb.jdbcDriver in classloader Datenbankprogrammierung 5
M HSQLDB 2.0 - wie tmp-Verzeichnis löschen Datenbankprogrammierung 2
S HSQLDB DELETE-Statement funktioniert nicht Datenbankprogrammierung 4
M Bei HSQLDB etwas wie OPTIMIZE TABLE? Datenbankprogrammierung 2
F HSQLDB HSQLDB lässt mich nicht auf erstellte Tabelle zugreifen Datenbankprogrammierung 12
D datenbank (hsqldb) in runnable jar einbinden Datenbankprogrammierung 2
E Herangehensweise Neues Projekt mit Netbeans / HSQLDB / JPA Datenbankprogrammierung 3
T Hsqldb: java.lang.NoClassDefFoundError: org/hsqldb/Server Datenbankprogrammierung 2
S HSQLDB Kopiere Tabellen Datenbankprogrammierung 2
H hsqldb - Database must be shutdown Datenbankprogrammierung 10
K Jpa hsqldb Datenbankprogrammierung 1
N Problem mit HSQLDB Datenbankprogrammierung 5
N Hsqldb und text tables source not found Datenbankprogrammierung 5
B HSQLDB Datenbank Manager Datenbankprogrammierung 19
R SELECT aus hsqldb mit Parameter Datenbankprogrammierung 2
R HSQLDB Datenbankprogrammierung 10
G hsqldb datenspeicherung Datenbankprogrammierung 2
D H2 DB oder doch HSQLDB ? Datenbankprogrammierung 2
A HSQLDB Performance bei erstem Zugriff Datenbankprogrammierung 6
G HSQLDB überprüfen, ob Tabelle bereits existiert Datenbankprogrammierung 3
@ HSQLDB: socket creation error Datenbankprogrammierung 6
G HSQLDB Files Datenbankprogrammierung 5
G maximale Einträge in HSQLDB Datenbankprogrammierung 7
A Datenspeicherung in hsqldb Datenbankprogrammierung 22
A Umgang mit hsqldb Datenbankprogrammierung 24
A Fehler in der HSQLDB Datenbankprogrammierung 6
A Problem mit der Anbindung zur hsqldb Datenbankprogrammierung 18
J HSQLDB ohne JDBC Datenbankprogrammierung 8
G Probleme mit Laden des JDBC-Treiber in HSQLDB Datenbankprogrammierung 2
G HSQLDB - kann mir jemand Packages erstellen? Datenbankprogrammierung 6
B HSQLDB und die log-Datei Datenbankprogrammierung 10
W HSQLDB Datenbankprogrammierung 6
G HSQLDB als Dateien anlegen Datenbankprogrammierung 5
S nullpointerexception bei HSQLDB Datenbankprogrammierung 4
L HSQLDB sichern (import und export von DB) Datenbankprogrammierung 3
D HSQLDB in JAR Datenbankprogrammierung 3
S hsqldb und ant Datenbankprogrammierung 3
S Hsqldb java.lang.NullPointerException Datenbankprogrammierung 2
D HSQLDB 2xPK + AutoInc Datenbankprogrammierung 22
M HSQLDB Server Problem Datenbankprogrammierung 2
T HSQLDB => diverses Datenbankprogrammierung 21
L persistentes Speichern von Daten in der HSQLDB ? Datenbankprogrammierung 5
A Weitere Fragen zu hsqldb Datenbankprogrammierung 6
A Text-Tabellen in HSQLDB Datenbankprogrammierung 9
A HSQLDB Datenbankprogrammierung 10
A Hsqldb ClassDefNotFound Datenbankprogrammierung 2
M Problem mit HSQLDB Datenbankprogrammierung 2
N Hibernate & hsqldb: Problem bei db-update Datenbankprogrammierung 7
G Problem mit der Startenzeit einer HSQLDB Datenbankprogrammierung 4
T HSQLDB, wie mache ich das mit hsqldb.cache_scale? Datenbankprogrammierung 13
E BufferedImage in hsqldb speichern Datenbankprogrammierung 5
B HSqlDb Datenbankprogrammierung 2
X HSQLDB und Variablen Datenbankprogrammierung 7
R hsqldb: performance, große tabellen und so Datenbankprogrammierung 10
P DERBY vs HSQLDB (Vor- Nachteile) Datenbankprogrammierung 3
EagleEye INSERT INTO Problem mit HSQLDB Datenbankprogrammierung 8
G Vector in hsqldb schreiben Datenbankprogrammierung 5
M Cast-Problem - HSQLDB Datenbankprogrammierung 3
C HSQLDB korrekter Shutdown Datenbankprogrammierung 2
C hsqldb Befehle in Java Datenbankprogrammierung 19
P HSQLDB Mehrbenutzerbetrieb Datenbankprogrammierung 7
D HSQLDB Datenbank Zugriff! Datenbankprogrammierung 4
H javaw bleibt bei hsqldb hängen Datenbankprogrammierung 12
D HSQLDB installieren ... Datenbankprogrammierung 8
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
OnDemand SSL Verbindung zu externer DB Datenbankprogrammierung 5
C MySQL Remote Verbindung zu MariaDB Datenbankprogrammierung 11
M SQL , CSV Verbindung : Zu Umfangreicher Code durch Unwissenheit Datenbankprogrammierung 21
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
Z Beim schließen des Programms die verbindung zur DB beenden. Datenbankprogrammierung 4
Husamoli345 JSF-JDBC Verbindung Crud Datenbankprogrammierung 15
V keine Verbindung möglich (Access-DB) Datenbankprogrammierung 3
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
M Oracle SQLException: Verbindung getrennt Datenbankprogrammierung 2
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
C Verbindung mit SQLExpress Datenbankprogrammierung 9
S E(fx)clipse Verbindung zu MS SQL Express aufbauen Datenbankprogrammierung 7
M H2 Verbindung zur Datenbank komplett schließen Datenbankprogrammierung 11
F MySQL Verbindung zum SQL-Server Datenbankprogrammierung 27
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
C datenbank verbindung config Datenbankprogrammierung 23
I MariaDB-Verbindung in JAVA Datenbankprogrammierung 11
J Verbindung aufbauen Datenbankprogrammierung 7
S DB2 Express C - keine Verbindung zur Datenbank Datenbankprogrammierung 2
I Es kann keine Verbindung zum Server aufgebaut werden Datenbankprogrammierung 12

Ähnliche Java Themen

Neue Themen


Oben