Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:datenbanken:projekt:java_db:java_db_null:start [02.04.2025 16:43] – angelegt Frank Schiebel | faecher:informatik:oberstufe:datenbanken:projekt:java_db:java_db_null:start [03.04.2025 20:36] (aktuell) – [Warum ist das wichtig?] Frank Schiebel | ||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
* In Datenbanken kann man bei der Spaltendefinition angeben, dass NULL-Werte erlaubt sind. Das bedeutet, dass in einem bestimmten Datensatz "kein Wert" für dieses Attribut gesetzt ist. | * In Datenbanken kann man bei der Spaltendefinition angeben, dass NULL-Werte erlaubt sind. Das bedeutet, dass in einem bestimmten Datensatz "kein Wert" für dieses Attribut gesetzt ist. | ||
- | * | + | * Im Beispiel rechts heißt das, dass für die Stadt Iraklion der Längen- und Breitengrad unbekannt ist - das entsprechende Attribut enthält keinen Wert. |
- | Im Beispiel rechts heißt das, | + | |
- | dass für die Stadt Iraklion | + | |
- | der Längen- und Breitengrad | + | ===== Verarbeitung mit Java ===== |
- | unbekannt ist. | + | |
- | Man muss „NULL“ hierbei von „0“ unterscheiden. | + | Bei der Iteration über ein ResultSet werden die Attributwerte mit entsprechenden '' |
+ | |||
+ | <code java> | ||
+ | Statement statement = DBConnection.createStatement(); | ||
+ | ResultSet result = statement.executeQuery(" | ||
+ | while(result.next()) { | ||
+ | Integer klasse = result.getInt(" | ||
+ | String vorname = result.getString(" | ||
+ | } | ||
+ | </ | ||
+ | Wenn eine Spalte der Datenbank einen '' | ||
+ | |||
+ | **Man kann bei Integer Variablen also nicht mehr unterscheiden, | ||
+ | |||
+ | Um NULL von 0 unterscheiden zu können, gibt es in der Klasse '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Man könnte jetzt also so etwas tun, um das Problem zu umgehen, und den NULL_wert aus der Datenbank in die Java-Variable zu überführen: | ||
+ | |||
+ | <code java> | ||
+ | [...] | ||
+ | int wert = rs.getInt(3); | ||
+ | boolean wasnull = rs.wasNull(); | ||
+ | if(wasnull) { | ||
+ | wert = null; | ||
+ | } | ||
+ | [...] | ||
+ | </ | ||
+ | |||
+ | Allerdings klappt das bei den primitiven Datentypen wie wie '' | ||
+ | |||
+ | Aus diesem Grund muss man bei den primitiven Datentypen die entsprechenden [[faecher: | ||
+ | |||
+ | Eine **korrekte Variante** sieht also so aus: | ||
+ | |||
+ | <code java> | ||
+ | [...] | ||
+ | Integer wert = rs.getInt(3); | ||
+ | if(rs.wasNull()) { | ||
+ | wert = null; | ||
+ | } | ||
+ | [...] | ||
+ | </ | ||
+ | |||
+ | ===== Warum ist das wichtig? ===== | ||
+ | |||
+ | Wenn man die Werte die in einer Datenbank gespeichert sind ausgeben oder verändern möchte, ist es wichtig, zu unterscheiden, | ||
+ | |||
+ | <code java> | ||
+ | ResultSet rs = stm.executeQuery(" | ||
+ | rs.next(); | ||
+ | |||
+ | Integer x = rs.getInt(1); | ||
+ | if (rs.wasNull()) x = null; | ||
+ | |||
+ | […] | ||
+ | |||
+ | if (x == null) { | ||
+ | textBox1.setText(" | ||
+ | } else { | ||
+ | textBox1.setText(x.toString()); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Material ===== | ||
+ | |||
+ | |||
+ | [[https:// |