# NullPointerException bei leeren Feldern



## tactar (1. Dez 2006)

Guten Tag!

Ich habe derzeit ein seltsames Problem bei einer Verbindung zu einer Access-Datenbank mittels JDBC-ODBC-Bridge:
Sobald in der SQL-Abfrage leere Felder vorkommen, dh per Query Datenfelder selektiert werden, die keinen Inhalt haben, bekomme ich eine NullPointerException von jedem beliebigen Befehl an das Resultset. 

Gibt es eine ander Möglichkeit zu prüfen, ob in einem bestimmten Feld ein Inhalt steht?

Hier der stark gekürzte Code:


```
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
FileName = "unitex_normal.mdb";
DataBase = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + FileName + ";DriverID=22;READONLY=true";
cn = DriverManager.getConnection( "jdbc:odbc:unitex", "", "" ); //anstatt mit 'unitex' hab ichs auch schon mit dem direkten Weg versucht (DataBase), gleiches Problem
st = cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
			
SQL = "SELECT Kunden.kundID AS Kunden_kundID, Kunden.kundFirmBez, ......" //und so weiter

rs = st.executeQuery( SQL );
```

So, und wenn nun irgend ein Feld, zB Kunden.kundFirmBez leer ist, kommt bei allen Befehlen die NullPointerException, beispielsweise:
rs.next();
rs.first();
rs.last();
....

Kann mir jemand weiterhelfen?


----------



## The_S (1. Dez 2006)

Poste bitte mal die genau Exception  .


----------



## tactar (1. Dez 2006)

java.lang.NullPointerException
wusste nicht, dass es da mehrere gibt...


----------



## The_S (1. Dez 2006)

Da gibts auch nur eine, aber da steht noch drunter was dabei, wo ma z. B. sieht an was es genau liegt  . Also poste bitte nochmal die Exception und diesmal wirklich die Ganze.


----------



## KSG9|sebastian (1. Dez 2006)

den exceptionstacktrace und n bissl code wollen wir


----------



## tactar (1. Dez 2006)

sagt mir doch gleich, dass es da einen Befehl dazu gibt 

java.lang.NullPointerException
        at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
        at java.lang.Double.parseDouble(Unknown Source)
        at Test.main(Test.java:274)


----------



## Guest (1. Dez 2006)

ok ich denke, der dazugehörige Code ist für auch relevant (an der Stelle 274)

```
rs = st.executeQuery ( SQL3 );
		  
			if( rs.next() )
			{
				
				//Linie
				posLine[0] = y;
				
				y-=10;
				over.showTextAligned( Element.ALIGN_LEFT, "Zwischensumme", x, y, 0 );
				x+=441;
				over.showTextAligned( Element.ALIGN_RIGHT, zahlformat.format(Summe), x, y, 0 );
				x-=441;
				y-=10;
			
				//mit Verpackung/Versand
				rsmd = rs.getMetaData();
				n = rsmd.getColumnCount();
				
				for( i=1; i<=n; i++ )   // Achtung: erste Spalte mit 1 statt 0
				{
		
					if( rsmd.getColumnName( i ).equals("rechVersandFirma"))
					{
						over.showTextAligned( Element.ALIGN_LEFT,  "+ " + rs.getString( i ), x, y, 0 );
						x+=441;
					}
					if( rsmd.getColumnName( i ).equals("rechVersandKosten"))
					{
						Summe += Double.parseDouble(rs.getString( i )); // ZEILE 274
						over.showTextAligned( Element.ALIGN_RIGHT,  zahlformat.format(Double.parseDouble(rs.getString( i ))), x, y, 0 );
						x-=441;
						y-=10;
					}

				}
```


----------



## The_S (1. Dez 2006)

Lass dir mal in Zeile 274 den String erstmal ausgeben. Ich schäzte mal der ist null ...


----------



## tactar (1. Dez 2006)

Vielen Dank für die Hilfe!
Nachdem ich mit dem Befehl printStackTrack die Position des Fehlers ausfindig machen konnte (sehr nützliche Funktion ) habe ich den Fehler selber gelöst.
Ja, der String war null, und das war das Problem.


----------



## Guest (1. Dez 2006)

eigentlich sollte ich den thread noch abhaken, finde aber leider diesen button nicht!!


----------



## The_S (1. Dez 2006)

geht net, weil du als gast unterwegs bist. Sonst könnte ja jeder Gast alle Threads von gästne abhaken  . Das macht n Mod (wenn zufällig einer drüberliest  )


_[Anonymer Mod: dein Wunsch sei mir Befehl]_


----------

