Leere Felder

Sammer

Mitglied
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
 

Sammer

Mitglied
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"
 

Sammer

Mitglied
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.

Java:
	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

Mitglied
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

Bekanntes Mitglied
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

Mitglied
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.
 

Ähnliche Java Themen

Neue Themen


Oben