# Create Table per JDBC Fehler: ORA-00922



## ocsme (31. Jan 2020)

Guten Tag zusammen,

ich hab nur etwas gespielt doch irgendwie komme ich nicht so recht hinter den Fehler.
Hab nur ein Kleines Programm geschrieben was eine Verbindung zu einer Oracle Datenbank herstellt und dann versuche ich ein Create Table SQL Statement abzugeben, doch dabei kommt eine Fehlermeldung.

Hier mal der Code:

```
import java.sql.*;

public class Test1 {
    public static void createNewTable() {
        String url = "xxx";
        String sql = "create Table Test (Gruppe char(1) not null,Test varchar(255) not null, primary key (Test));";

        try (Connection conn = DriverManager.getConnection(url); Statement stmt = conn.createStatement()) {
            Class.forName("oracle.jdbc.OracleDriver");
            System.out.println("Oracle JDBC driver loaded ok.");
            stmt.execute(sql);
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }

    public static void main(String[] args) {
        createNewTable();
    }
}
```

Nun erscheint folgender Fehler:


> Oracle JDBC driver loaded ok.
> ORA-00922: Fehlende oder ungültige Option



Ehrlich habe ich noch nicht in Java ist eine Insel nachgeschlagen den so ganz verstehe ich die Objekte die wir dafür benötigen noch nicht. So frage ich mich auch was die Methode execute von meinem Statement Object tut. In einigen Tutorials wird auch executeUpdate benutzt. Habe ich auch schon versucht der selbe Fehler.
Wenn ich das SQL Statement im Oracle SQL Developer abgebe läuft alles


----------



## kneitzel (31. Jan 2020)

Versuch mal das ; am Ende zu entfernen. Evtl. bringt das schon die Lösung.


----------



## LimDul (31. Jan 2020)

Ggf auch bei Oracle. varchar2 anstelle von varchar, ich bin mir da nicht sicher, was genau Oracle in Bezug auf varchar kann.


----------



## ocsme (31. Jan 2020)

@LimDul : varchar geht aber normal sollte man bei Oracle varchar2 nehmen das stimmt.

@JustNobody mhhh... ich glaub ich werd verrückt. Das hat geklappt. Das Semikolon war zu viel wieso weiß ich jetzt noch nicht aber ich bin schon einmal Glücklich das es so geklappt hat.

Ich sollte das ganze doch Theoretisch auch localhost mit mysql ansprechen können. Den passenden Treiber einbinden in den Path und dann sollte das ganze doch auch machbar sein stimmt´s. Denn das würde ich sehr gerne später alles mal versuchen und mir einfach ein paar Methoden schreiben zum Üben  Also Tabellen erstellen, Löschen, Abfragen machen vielleicht alles noch in JavaFX verpassen mal schauen.


----------



## kneitzel (31. Jan 2020)

Das Problem ist nach meinem Verständnis, dass Statement genau ein SQL Befehl ist und ; ja der Trenner zwischen zwei Befehlen. So habe ich mir das etwas erklärt damals .... aber mit Oracle hatte ich bisher sehr wenig am Hut und da bin ich kein Experte.... Aber über sowas bin ich halt auch mal gestolpert ....


----------

