# PreparedStatement wird nicht ausgeführt



## Kirby.exe (17. Jun 2021)

Ich versuche gerade via PreparedStatement einen Table zu erstellen, aber wenn ich das Programm laufen lasse wird kein Table erstellt...Ich habe das Query mal händisch per psql ausgeführt und da hat es funktioniert...

Hier ist die Klasse:


```
public class DatabaseConnector {

    public static void main(String[] args) {
        try (Connection c = DriverManager.getConnection("jdbc:postgresql://localhost:5435/aphbr", "aphbr", "7f960")) {
            c.setAutoCommit(false);
            System.out.println("Database Connection is established!");

            //final DBActor person = new DBActor("Arnold", "Schwarzenegger");
            int res = createTable(c);
            System.out.println(res);

        } catch (SQLException ex) {
            System.out.println("Database Connection has failed!");
            ex.printStackTrace();
        }
    }

    private static int createTable(Connection c) throws SQLException {
        PreparedStatement pre = c.prepareStatement("DROP TABLE IF EXISTS people; CREATE TABLE people (id NUMERIC PRIMARY KEY, first_name VARCHAR, last_name VARCHAR, persistent BOOL);");
        System.out.println(pre.toString());
        return pre.executeUpdate();
    }
}
```


----------



## kneitzel (17. Jun 2021)

Dein Statement besteht aus mehreren Statements. Das würde ich auf den ersten Blick als mögliche Ursache sehen.

Die Option allowMultiQueries=true im connection String könnte hier vielleicht Abhilfe schaffen.


----------



## Kirby.exe (17. Jun 2021)

kneitzel hat gesagt.:


> Dein Statement besteht aus mehreren Statements. Das würde ich auf den ersten Blick als mögliche Ursache sehen.
> 
> Die Option allowMultiQueries=true im connection String könnte hier vielleicht Abhilfe schaffen.


Ich hatte es vorher als ein Query und auch das hat nicht funktioniert... Also ich hatte es vorher so:


```
CREATE TABLE IF NOT EXISTS people (id NUMERIC PRIMARY KEY, first_name VARCHAR, last_name VARCHAR, persistent BOOL);
```


----------



## kneitzel (17. Jun 2021)

```
c.setAutoCommit(false);
```

Ich sehe auf den ersten Blick auch keine Stelle, an der Du etwas commitest.


----------



## Kirby.exe (17. Jun 2021)

kneitzel hat gesagt.:


> ```
> c.setAutoCommit(false);
> ```
> 
> Ich sehe auf den ersten Blick auch keine Stelle, an der Du etwas commitest.


Das war die Zeile...Gott ich habe die einfach aus den Docs übernommen xD Wie hätte das denn mit der Zeile funktioniert? Hätte ich dann nen expliziten Commit machen müssen?


----------



## Flown (17. Jun 2021)

Kirby.exe hat gesagt.:


> Hätte ich dann nen expliziten Commit machen müssen?


`c.commit();` richtig.


----------

