# Create Table mit PreparedStatement



## Samson_Miller (28. Apr 2008)

Ich würde gerne mittels eines PreparedStatement "PreparedStatement" eine neue Tabelle erstellen. Also folgendermaßen:


```
String createStatement = "CREATE TABLE ? ( ?,? ...)";
PreparedStatement ppSt= con.prepareStatement(createStatement);
ppSt.setString(1,"tabellenname");
ppSt.setString(2,"ID");
...
```

Allerdings ist erst zur Laufzeit klar, wie viele Spalten die Tabelle haben wird, daher die Punkte in der Klammer. Ist es möglich bei einem "PreparedStatement" den Tabellennamen offen zu lassen? Und wie kann ich unbesimmte anzahl an Spalten definieren?


----------



## Guest (28. Apr 2008)

Für sowas ist PreparedStatement gar nicht gedacht.
Schreib dir eine Klasse, die z.B. folgenden Aufruf möglich macht.

```
Statement stmt = new TableGenerator("tablename")
                .addField("id", Types.BIGINT)
                .addField("name", Types.VARCHAR, 64)
                .addField("costs", Types.DECIMAL, 10, 3, 0.0d)
                .addField("active", Types.BOOLEAN, false)
                .addConstraint("id", Constraint.PRIMARY_KEY)
                .addConstraint("name", Constraint.UNIQUE | Constraint.NOT_NULL)
                .addConstraint("costs", Constraint.NOT_NULL)
                .createStatement(Dialect.Oracle);
```


----------



## Samson_Miller (29. Apr 2008)

besten dank, das werde ich mal ausprobieren.


----------

