Datenbankzugriff mit Java

Die Sache mit den NULL-Werten

Zur Erinnerung...

NULL?

Was bedeutet die DB-NULL - und was wird in Java daraus?

  • Ein NULL-Wert in der Datenbank bedeutet meist "Keine Information vorhanden".
  • Was machen die Java-result.getXXX Methoden aus den NULL-Werten der Datenbank?
    int klasse = result.getInt("SKlasse");
    String vorname = result.getString("SVorname"); 
  • NULL-Werte der Datenbank werden durch die Default-werte der Java Datentypen ersetzt: Für String null, für int 0
  • Das ist schlecht, weil man bei Integer Werten jetzt nicht mehr weiß, ob in der Datenbank "keine Information" hinterlegt war oder die Information "0"

Der Trick: result.wasNull()

Was bringts?

[...]
int wert = rs.getInt(3);         // → 0, aber in der DB NULL!
boolean wasnull = rs.wasNull();  // → true
if(wasnull) {
  wert = null;
}
[...]

Das klappt nicht, weil primitive Datentypen (int, char, double...) in Java keine Objekte sind und darum keine null-Werte speichern können.

So geht's!

Wir müssen die entsprechenden Wrapper-Klassen verwenden, dann klappt es!

[...]
Integer wert = rs.getInt(3); // → 0, aber in der DB NULL
if(rs.wasNull()) {
  wert = null;  // Jetzt klappt das!
}
[...]
Damit kann man jetzt Code wie diesen schreiben:
Integer x = rs.getInt(1);
if (rs.wasNull()) x = null;
 
[...]
 
if (x == null) {
  textBox1.setText("Kein Wert in der DB vorhanden");
} else {
  textBox1.setText(x.toString());
}