# Creates der Datenbank auslesen



## Timmah (9. Jun 2006)

Hallo Leute,

ich würde gerne von einer Access-Datenbank die Befehle generieren lassen, die diese Datenbank mit allen Unterkomponenten erstellt.
Kennt dafür irgendwer etwas?


----------



## SamHotte (9. Jun 2006)

Du kannst alles über SQL erzeugen lassen, was du brauchst ...


----------



## Timmah (9. Jun 2006)

?

Ich möchte die gesamte Struktur der Datenbank als SQL-Befehl haben...


----------



## SamHotte (9. Jun 2006)

Schau mal hier unter "Praktischer Teil SQL".


----------



## bummerland (9. Jun 2006)

Mach mal dein Signaturbild kleiner.


----------



## Timmah (9. Jun 2006)

SamHotte hat gesagt.:
			
		

> Schau mal hier unter "Praktischer Teil SQL".



Ich glaub dir ist nicht ganz klar, was ich eigentlich möchte.

Ich habe eine Datenbank, dessen Aufbau ich erhalten möchte; d.h. ich will kein CREATE absetzen, sondern dieses aus der Struktur der Datenbank generieren lassen.


----------



## SamHotte (9. Jun 2006)

Ah, ok - hab nur den Text des Posts gelesen, nicht den Inhalt...   

Grob so (für 'ne Access-DB -- db ist meine Datenbankdatei)? Hab jetzt die Klammern nicht gezählt, musste ein paar unwichtige Details wie loggen usw. löschen.

```
List result = new ArrayList();
    try {
      DatabaseMetaData metaData = this.connection_.getMetaData();
        System.out.println("Datenbank-Produktname   : "
            + metaData.getDatabaseProductName());
        System.out.println("Datenbank-Produktversion: "
            + metaData.getDatabaseProductVersion());
        System.out.println("Datenbank-Datei         : " + db);

      ResultSet catalogs = metaData.getCatalogs();
      while (catalogs.next()) {
        String tableCatalog = catalogs.getString("TABLE_CAT");
        String catalog = Helper.ersetzeBackslash(tableCatalog);
          System.out.println("Catalog: " + catalog);

        // von db noch die Extension '.mdb' abschneiden
        String cat = db.substring(0, db.indexOf(".mdb"));
        // Namen der Relationen einlesen
        if (catalog.equals(cat)) {
          String[] types = { "TABLE" };
          ResultSet tables = metaData
              .getTables(tableCatalog, null, null, types);
          List namen = new ArrayList();
          while (tables.next()) {
            namen.add(tables.getString("TABLE_NAME").toLowerCase());
          }

        // hier jetzt die Spalten einlesen und weitermachen ...

        }
        else {
          System.out.println("Nicht relevante DB: " + catalog);
        }
      }
    }
    catch (SQLException exception) {
      Sytem.err.println(exception.getMessage());
    }
```


----------



## Timmah (9. Jun 2006)

Okay,

das ist also der Weg, den ich vermeiden wollte (ich dachte an eine fertige API oder so).

Aber trotzdem danke


----------



## SamHotte (9. Jun 2006)

Falls du eine findest, sag mal Bescheid


----------



## thE_29 (9. Jun 2006)

Könntest ja eine schreiben


----------



## Timmah (10. Jun 2006)

Ich werde auf jeden Fall eine entsprechende Implementation schreiben, und werde sie dann natürlich auch hier veröffentlichen


----------

