# Überprüfen ob Tabelle existiert in Access per ODBC



## Verjigorm (5. Sep 2008)

Hallo,

ich habe die tolle Aufgabe bekommen Daten aus Superbase-Tabellen in Access zu migrieren.
Tabellen erzeugen, lesen, schreiben, funktioniert soweit alles bestens.

Nun soll das Ganze etwas dynamischer ablaufen und ich muss testen, ob eine Tabelle in Access bereits existiert.
Und hierbei tut sich es mir grad ziemlich schwer.
Der schöne SQL-Zusatz "IF NOT EXISTS" mag Access wohl garnich:

"CREATE TABLE IF NOT EXISTS Test(..)"

```
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in CREATE TABLE-Anweisung.
```
Ohne das "IF NOT EXISTS" geht alles wunderbar.

Nun habe ich bereits brav rumgegooglt, aber irgendwie finde ich die Lösung des Problems nicht.

wenn ich vorher sowas Abfrage wie "SELECT * FROM TEST" kommt natürlich 

```
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Das Microsoft Jet-Datenbank modul findet die Eingangstabelle oder Abfrage 'Test' nicht.
```

wenn ich ohne Rücksicht "CREATE TABLE...." aufrufe, logischerweise:

```
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Tabelle 'Test' ist bereits vorhanden.
```

Weiss jemand, wie das geht?
Ansonsten war grad noch die Idee, die SQL-Exception nach "Eingangstabelle oder Abfrage 'Test' nicht." zu parsen und an geeigneter Stelle dann die CREATE TABLE-Anweisung einzusetzen, find ich aber sehr unschön 

mfg Verjigorm


----------



## FArt (5. Sep 2008)

Nachdem Access ja eh keine echte DB ist, würde ich das so machen:
create anstoßen... im Fehlerfall kann man davon ausgehen, dass die Tabelle existiert.


----------



## Verjigorm (5. Sep 2008)

Das ist etwas komplizierter:

Ich benötige die SQLException noch zum Ausführen von einigen anderen Operationen, deswegen ist es blöd, dass nur SQLExceptions geworfen werden.

Wenn nun die Tabelle schon existiert, muss ich trotzdem schauen um welche Nachricht es sich handelt, damit ich nicht immer den Code ausführe, der im Catch-Block steht


----------

