# Leere Felder



## Sammer (11. Jul 2014)

Hallo zusammen,
ich habe als Aufgabe, eine Datenbank mit PostgreSQL zu erstellen. Das klappt soweit ganz gut. Auch die Anbindung in Java sowie die Abfrage stellen in dem Sinne kein Problem dar.
Jedoch ist mein Problem, das die Tabelle auch zum Teil leere Spalten hat. Bei der Abfrage möchte ich diese jedoch dennoch mit dabei haben und an eine Tabelle übergeben. Die klappt, insofern ich nur gefüllte Spalten anspreche, auch.
Nun zu meiner Frage:
Während der Definition meiner Abfrage an die Datenbank wird eine "java.lang.NullPointerException" geworfen, da verständlicherweise auch nichts drin steht.
Dennoch kann ich darauf nicht verzichten da bei anderen Einträgen die besagte Spalte wieder gefüllt sein kann.
Kann man die NullPointer umgehen indem man das besagte Feld als String "" setzt und somit die Spalte in der Tabelle als leer erscheint?

Mit freundlichen Grüßen


----------



## Deros (11. Jul 2014)

Spalten die "null" sind führen nicht zu NPE, zeig mal Code und wo der NPE dann auftritt.


----------



## Sammer (11. Jul 2014)

Danke für die Antwort!
Ich habe die Daten bisher über pgAdmin eingepflegt. In der besagten Spalte wo kein Wert zugeordnet werden konnte, habe ich auch keinen reingeschrieben. Setzt PostgreSQL das automatisch "null" oder ist es quasi dann nur "leer"


----------



## Deros (11. Jul 2014)

leer ist in dem Falle gleichbedeutend mit null.

Also JavaCode und StackTrace opcorn:


----------



## Sammer (15. Jul 2014)

Guten Morgen, danke für die schnelle Antwort, habe es leider über das Wochenende nicht geschafft.
Wie gesagt tritt der Fehler in Spalte 5 auf. 

Dort wirft er dann den Fehler bei "(String) rs.getObject(5).toString()}". --> java.lang.NullPointerException at DB_Connection.tabelle(DB_Connection.java:89)

Wie gesagt ist diese Spalte auch leer, aber ich möchte dann in der Tabelle einfach eine leere Spalte haben und keine Fehlermeldung.


```
public static DefaultTableModel tabelle(Connection con) {
		
		String daten[][]={};
		DefaultTableModel tabelle=new DefaultTableModel(daten,spaltennamen);
		
		Statement stmt = null;
		try {
			stmt = con.createStatement();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		tabelle.setRowCount(0);
		String query = "select* from ta_messdaten";
		try {
			ResultSet rs = stmt.executeQuery(query);

				 while (rs.next())
				 {
				
					 String [] temp={(String) rs.getObject(1).toString(), (String) rs.getObject(2).toString(),(String) rs.getObject(3).toString(),(String) rs.getObject(4).toString(),(String) rs.getObject(5).toString()};
//String [] temp={(String) rs.getObject(1).toString(), (String) rs.getObject(2).toString(),(String) rs.getObject(3).toString(),(String) rs.getObject(4).toString(),
//		(String) rs.getObject(5).toString(),(String) rs.getObject(6).toString(),(String) rs.getObject(7).toString(),(String) rs.getObject(8).toString(),(String) rs.getObject(9).toString(),(String) rs.getObject(10).toString(),(String) rs.getObject(11).toString()};
				
						 tabelle.addRow(temp);
				 
				 }

							
			 }catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return tabelle;
```


----------



## Sammer (15. Jul 2014)

Habe das Problem gelöst, insofern ich die Spalte direct anspreche. Gibt es hierfür eine Erklärung? Aber es funktioniert erstmal :applaus: Danke!
(String) rs.getObject("feldbuch")


----------



## Deros (15. Jul 2014)

naja wenn der Wert in der DB null ist, was wird wohl das Objekt sein das du aus der DB dafür ausliest? und was wird passieren wenn du darauf die toString()-Methode aufrufst?


----------



## Sammer (15. Jul 2014)

ok verstanden 
eine letzte Frage: Wie würdest du die NullPointer umgehen, um dennoch die jewiligen Objekte anzuspechen und an die Tabelle zu übergeben auch wenn sie leer sind.


----------



## Deros (15. Jul 2014)

das toString() weglassen?


----------

