Hi Thomas,
Post by Thomas WinklerHallo allerseits,
zuerst einmal vielen Dank für die vielen Tips und Hinweise.
Ich muss mein Problem wohl nocheinmal etwas klarer formulieren, da ich
selbst nicht ausreichend zwischen binärem Auslesen und der Verwendung
einer Connection differenziert habe.
Hauptanliegen ist es, die MDB-Version *ohne* das Herstellen einer
Verbindung zu ermitteln. D. h. es muss anhand verschiedener Bit- oder
Byte-Muster (möglichst exakt) erkannt werden, um welche MDB-Version es
sich handelt. Bisher ist mir das so direkt noch nicht gelungen.
Einzig die zum Erstellen der MDB genutzte JET/ACE-Engine kann ich
bisher ermitteln und damit (recht ungenau) die MDB-Version
Jet 2 -> 2.0
Jet 3 -> 97
Jet 4 -> 2000, 2002 oder 2003
ACE -> 2007
- Was ist mit Access 95?
- Wie halte ich die 200X-Versionen auseinander?
Wenn sich nun A2000 von den 2002/2003-er dadurch unterscheidet, dass
eine Tabelle "MSysAccessObjects" existiert, könnte man diesen String
in der MDB-Datei suchen. Damit hätte man im Idealfall 2000 erkannt.
Man müsste aber im WorstCase 2GB durchsuchen, was nicht gerade
performant ist. Gibt es irgendwo ein Offset, ab dem im binary die
Tabellen(namen) aufgelistet werden? Die Frage läuft letztendlich auf
eine Format-Beschreibung hinaus. Kennt jemand soetwas?
Was ist aber, wenn in einer 2002er ein beliebiges Objekt mit diesem
Namen per Hand anlegt? Wie halte ich 2002 und 2003 auseinander?
Das allerdings hättest du ruhig schon früher erwähnen können, dass es sich
um Java handelt...
Aber auch das reicht mir noch nicht, um das Vorhaben wirklich zu verstehen:
Auf welcher Plattform soll das laufen?
Falls Windows: Welche OS-Versionen sollen unterstützt werden?
Oben sprichst du von JDBC-Bridge, hier von Auslesen ohne jegliche
Connection; was jetzt? Ist ODBC erlaubt?
Ich habe im Netz noch keinerlei Informationen zum MDB/ACCDB-Format gefunden,
das neuer, als von 2001 wäre - und das reicht hier nicht.
Insofern wirst du selbst forschen müssen, wenn du rein binär auslesen
willst, wobei mir sowas, wie einfach nur nach Strings der Tabellennamen zu
suchen, nicht ausreichend erscheint.
Falls das Ganze unter Windows laufen soll, verstehe ich aber immer noch
nicht, warum man kein ADO-Connection-Objekt verwenden kann. Das geht doch
auch mit Java?
Mit A2.0/95-DBs kann ich leider nicht dienen.
Ciao, Sascha