if-Anweisung wird angemeckert, andere identische nicht

Status
Nicht offen für weitere Antworten.

rhöner

Mitglied
Ich habe mal wieder in einem Java Programm folgendes Problem: Ich frage eine SQL Datenbank ab und will die Werte in ein Pdf übergeben. Wenn in einer Zelle kein Wert steht, also "null" ist, soll er nicht "null" schreiben sondern nichts.

Code:
...
String sql2 = null;
			sql2 = "select tplsnr, aklta, aklmo, akljh, aklja, tpiden, tpidv, " +
					"(select tzbez1 from pbfstss where tzkonz=tpkonz and tzfirm=tpfirm and tziden=tpiden) as bez, tpkmen, " +
					"(select bwegwlm from geisdtt.gxbswead where bwekonz=tpkonz and bwefirm=tpfirm and bwehu=tpprnr and bweiden=tpiden and bwewenr=tpwenr ) as gewicht " +
					"from phisttp left join psaveak on (tpkonz=akkonz and tpfirm=akfirm and tplsnr=aklsnr and tpanr1=akanr1) " +
					"where tpkonz='MES' and tpfirm='CRO' and tplief='" + liefnr + "' and tpnsst=320 " +
					"and ((AKLJH*100+AKLJA)*10000+AKLMO*100+AKLTA)>='" + datumvon + "' " +
					"and ((AKLJH*100+AKLJA)*10000+AKLMO*100+AKLTA)<='" + datumbis + "' " +
					"order by tpidv, ((AKLJH*100+AKLJA)*10000+AKLMO*100+AKLTA), tplsnr, tpiden";
			ResultSet res2 = statement.executeQuery(sql2);
...

Position p = new Position();
				
		 
            if (res2.getString("bez").trim().equals("null")) {
					p.setBezeichnung("");
				} else {
					p.setBezeichnung( res2.getString("bez") );
				}

            if (res2.getString("tplsnr").trim().equals("null")) {
					p.setLsnr("");
				} else {
					p.setLsnr(res2.getString("tplsnr"));
				}
...

Wenn ich das Programm laufen lasse, meckert er mir die if-Anweisung in Zeile 18 an. Die anderen if-Anweisungen die genauso aufgebaut sind, akzeptiert er. Was mache ich falsch? Ich suche schon den ganzen Tag.

Die Fehlermeldung:
WARNUNG: Unknown element (isinput) in attribute
java.lang.NullPointerException
at de.geis.argus.ausfuhrbescheinigung.AusfuhrBean.erzeugeAusfuhr(AusfuhrBean.java:18)
 
er meckert?
ich glaub nicht, das er meckert! ich glaub er gibt dir eine klare fehlermeldung oder einen hinweis...

zeig uns mal den hinweis, dann sehn wir weiter...
 
>res2.getString("bez").trim().equals("null")

vergleicht den String mit dem String null

also

Code:
String str = "null";
String nothing = null;

equals vergleicht nun einen String mit "null", also ob der String den Text null hat.
ist der String allerdings null im Sinne von nix (also nicht "null" eine reihe von char), dann geht kein trim darauf und auch kein equals. Die folge NPE. Da der String eben null (also nix ist) und auf nix kann man keine Methoden ausführen.

Nullsafe wäre

Code:
if( someString != null && someString.equals("hallo welt") {}
 
Ich habs jetzt:

Code:
if (res2.getString("bez") == null) {
					p.setBezeichnung("");
				} else if (res2.getString("bez").trim().equals("null")) {
					p.setBezeichnung("");
				} else {
					p.setBezeichnung( res2.getString("bez") );
				}

Somit funktioniert es wieder.
 
Never change a running system. 😉
Ich mach schon den ganzen Tag damit rum. Ich laß es jetzt so. Gottseidank gleich Feierabend.
 
stell dir vor, für jedes res2.getString("bez") müsste intern eine DB-Anfrage gestellt oder zumindest irgendwelche lokalen Strukturen durchgearbeitet werden,

dann doch besser
String x = res2.getString("bez");
if (x = 1) ..
else if(x = 2)
else do y with x
 
Code:
if (res2.getString("bez").trim().equals("null"))
dachte mir das wär absicht... man weiß ja nie was die leute in ihre dbs rein fixen


aber warum sollte da der compiler "mekern", compiliert doch...
 
Btw, das kann gar nicht funktionieren!

Du kannst bei den meisten ResultSet nur EINMAL einen Index abfragen!

Dh, res2.getString("bez") liefert beim ersten mal was beim 2ten mal hingegen aber nix mehr!
Von daher zwischenspeichern.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben