per hsqldb auf *.odb Datenbank zugreifen

Ignus

Mitglied
Hallo,

ich möchte mit Java auf meine bestehende OpenOfficeDatenbank zugreifen.

Code:
public void test(){
		try{
			try
			{
			Class.forName("org.hsqldb.jdbcDriver");
			System.out.println("Driver loaded...");
			}
			catch(Exception e){System.out.println("Failed to load hsql driver.");return; }
			
			Connection conn;
			PreparedStatement preSt;
			String dbname;
			String sql;
			ResultSet rsA;
			
	        sql = "select * from parameters";
	        dbname = "D:/MyFiles/EigeneDateien/Vita/myvitals";
	        //conn = DriverManager.getConnection("jdbc:hsqldb:file:" + dbName,"sa","");
	        try{
	        conn = DriverManager.getConnection("jdbc:hsqldb:file:D:/MyFiles/EigeneDateien/Vita/myvitals","sa","");
	        
	        DatabaseMetaData metaData = conn.getMetaData();
	     // Get schema information
	        System.out.println("Schemas");
	        ResultSet schemas = metaData.getSchemas();
	        while (schemas.next()) {
	          System.out.println(schemas.getString(1));
	        }
	     // Get table information
	        System.out.println("Tables");
	        ResultSet tables = metaData.getTables("", "", "", null);
	        while (tables.next()) {
	          System.out.println(tables.getString(3));
	        }
	        /*
	        preSt = conn.prepareStatement(sql);
	        preSt.executeQuery();
	        rsA = preSt.executeQuery();
	        while (rsA.next()){
	            System.out.println(rsA.getRow() + " -- " + rsA.getString(2) + " -- " + rsA.getString(3));
	        };
	        rsA.close();
	        preSt.close();
	        */
	        conn.close();
	        }catch(Exception e){e.printStackTrace();}
	        
	    }catch (Exception e) {e.printStackTrace();};
	}

Prinzipiell scheint mir der Code richtig.

Mein Problem ist nun:
In meiner Datenbank myvitals.odb befinden sich 2 Tabellen. Eine davon heist 'parameters'.
Wenn ich nun einen 'select' ausführe um Daten abzufragen, findet er die Tabellen nicht.
Er scheint auch die Datenbank erst garnicht zu finden, obwohl sie richtig angegeben ist.
Selbst wenn ich den Datenbanknamen falsch schreibe kommt der gleiche Fehler.

java.sql.SQLException: Table not found in statement [select * from parameters]
at org.hsqldb.jdbc.Util.throwError(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
at input.test(input.java:66)
at input.<init>(input.java:28)
at input.main(input.java:103)

Automatisch werden dazu 3 Dateien vom Treiber im Verzeichnis der Datenbank erstellt.
Egal ob ich die Datenbank mit "myvitals.odb", "xxmyvitals.odb", "myvitalsxx.odb" oder nur "myvitals" im Code angebe, lauten die 3 Dateien immer gleich :confused::
myvitals.log, myvitals.properties, myvitals.script


mfg Ignus
 
Ich bin nun doch auch allein etwas weiter gekommen *g*

Ich wusste zuvor nicht das die .odb Dateien nichts anderes als zip Archive sind.
Jetzt ergeben die erstellten 4 Dateien des hsqldb-Treibers auch einen Sinn.
Ich muss also zunächst meine myvitals.odb entpacken und kann dann erst damit arbeiten.

Es scheint dadurch ein bissel komplizierter als mit ner msaccess-db zu werden.
Aber was solls.

mfg Ignus
 
Zurück