# String in DB(Oracle) schreiben mit Leerzeichen



## Tigerlili (19. Apr 2006)

Hallo ich möchte über PreparedStatement Daten in die DB schreiben.
Ich lese diese Daten mit Hilfe der Klasse Scanner über die Konsole ein und setze dann die entsprechenden Daten mit Hilfe des PreparedStatement.

Ich habe dann herausgefunden, dass man mit der Methode nextLine() den kompletten String inklusive Leerzeichen lesen kann. Wenn ich diese Methode allerdings anwende kann ich nichts eingeben und es kommt eine Fehlermeldung.

```
Scanner sc = new Scanner (System.in);
System.out.println("Geben Sie bitte den Kategoriennamen ein!");
String name = sc.nextLine();
ps.setString(2, name);
```

folgende Fehlermeldung erscheint:
Einfügen von NULL in ("SYSTEM"."CATEGORY"."NAME") nicht möglich

Wäre super wenn mir irgendwer weiterhelfen könnte.
Danke.


----------



## unficyp (19. Apr 2006)

Du solltest den String name auf null prüfen und nur dann einfügen wenn dieser nicht null ist.

Ich hätte es so gemacht:


```
InputStreamReader isr = new InputStreamReader( System.in );
BufferedReader stdin = new BufferedReader( isr );
System.out.println("Geben Sie bitte den Kategoriennamen ein!");
String input = stdin.readLine();
if(input != null)
    ps.setString(2, name);
```

Die andere (nicht sinnvolle) Möglichkeit wäre das NOT NULL Constraint für die Column Name zu entfernen.


----------



## Tigerlili (20. Apr 2006)

Ja das mit dem BufferedReader funktioniert.

Gibt es aber keine Möglichkeit das mit der Klasse Scanner hinzubekommen?


----------



## unficyp (20. Apr 2006)

eh.


```
Scanner sc = new Scanner (System.in);
System.out.println("Geben Sie bitte den Kategoriennamen ein!");
String name = sc.nextLine();
if(name.length() > 0)
ps.setString(2, name);
```


----------



## Tigerlili (20. Apr 2006)

hm das funktioniert leider nicht, denn mir wird gar nicht erst die Möglichkeit gegeben etwas in die Variable name einzutragen.
Das Programm springt direkt in den else - Teil.


----------

