Fehler in Suns FilteredRowSet Implementierung?

Status
Nicht offen für weitere Antworten.

FenchelT

Bekanntes Mitglied
Hallo,

habe mal eine Frage zur folgenden Fehlermeldung:

Exception in thread "main" java.lang.NullPointerException
at test.FilteredRowSet.MyFilter.evaluate(MyFilter.java:64)
at com.sun.rowset.FilteredRowSetImpl.internalNext(Unknown Source)
at com.sun.rowset.CachedRowSetImpl.next(Unknown Source)
at test.FilteredRowSet.MainCtrl.init(MainCtrl.java:43)
at test.FilteredRowSet.MainCtrl.<init>(MainCtrl.java:19)
at test.FilteredRowSet.Start.main(Start.java:30)


Es wird mir das gesamte FilteredRowSet ausgegeben. Mitten drin tacuht diese Fehlermedlung auf, allerdings werden trotzdem alle Datensaetze angezeigt.

Kann mir evtl jemand sagen, was hiermit gemeint ist?
at com.sun.rowset.FilteredRowSetImpl.internalNext(Unknown Source)

Handelt es sich hierbei um einen Java Fehler?

Ich koennte so langsam echt kot... Es bringt mich noch lansam zur Verzweiflung dieses FilteredRowSet.
Wenn das nicht bald laeuft, schreibe ich mein eigenes :?


Danke schonmal fuer eure Unterstuetzung
 

Wildcard

Top Contributor
Der Fehler liegt wohl in MyFilter in Zeile 64:
test.FilteredRowSet.MyFilter.evaluate(MyFilter.java:64)
 

FenchelT

Bekanntes Mitglied
Moin wildcard,

hmm, es passiert nicht wirklich viel "kompliziertes" in Zeile 64

Zeile 63:
String columnValue = frs.getString(this.columnName)

Zeile 64:
if ( columnValue.contains(this.searchString)) {


Das Problem ist, der Fehler laesst sich reproduzieren, soll heissen, er passiert jedes Mal; allerdings nicht an der gleichen Stelle.

Mal ist es bei Ausgabe des Datensatzes 500, mal bei Ausgabe des DS 300

Was mir aufgefallen ist, ist das die ProzessorLeistung jedes Mal kurzzeitig auf 98-100% ansteigt und dann wieder auf
unter 10% abfaellt.


Gibt es eine bessere Moeglichkeit als contains zu ueberpruefen, ob Buchstaben in einem String enthalten sind?


Danke Dir nochmals
 

ms

Top Contributor
Wenn in Zeile 64 eine NullPointerException auftritt, dann wird wohl ein Objekt null sein, auf dem du eine Methode ausführen willst. Finde erstmal raus welches Objekt das ist. Kleiner Tipp: kann es sein, dass ein String in der Spalte einen Null-Value beinhaltet und das Ergebnis vielleicht nicht immer in der selben Sortierung vorliegt?

ms
 

FenchelT

Bekanntes Mitglied
ms hat gesagt.:
Wenn in Zeile 64 eine NullPointerException auftritt, dann wird wohl ein Objekt null sein, auf dem du eine Methode ausführen willst. Finde erstmal raus welches Objekt das ist. Kleiner Tipp: kann es sein, dass ein String in der Spalte einen Null-Value beinhaltet und das Ergebnis vielleicht nicht immer in der selben Sortierung vorliegt?

ms

Hallo ms,

das hatte ich bereits geprueft.
Es gibt keine NullValues. Es sind alles aktive Kunden. Ich filtere nach Orten. Alle Kunden haben Orte, sonst koennen Sie gar nicht angelegt werden.
Wie ich eingangs geschrieben habe wird der Datensatz trotz dieser Exception angezeigt.
Ich haette das ja auch verstanden wenn dann Ende waere, aber es werden noch alle weiteren DS angezeigt.
 

ms

Top Contributor
Klingt nach einem try-catch-Block der innerhalb der Schleife sitzt.
Zeig mal deinen Code.

ms
 

FenchelT

Bekanntes Mitglied
Hier der relevante Code

Meine Filter Klasse:

Code:
public class MyFilter implements Predicate
{
	private String searchString = null;
	private String columnName = null;

	
	public MyFilter(String searchString, String columnName)
	{
		this.searchString = searchString;
		this.columnName = columnName;
	}
	
	


	public boolean evaluate(RowSet rs) 
	{
		
		if (rs == null) 
		{
			System.out.println("Debug1");
			return false;
		}
		
		
		FilteredRowSet frs = (FilteredRowSet) rs;
		boolean evaluation = false;
		
		
		try 
		{
			//System.out.println("Debug2");
			String columnValue = frs.getString(this.columnName);
  
			if (columnValue.contains(this.searchString)) 
			{
				evaluation = true;
			}
		
		} 
		catch (SQLException e) 
		{
			/*
			System.out.println("evaluate: " +e.getMessage() + "\n" + e.getStackTrace());
			e.getNextException();
			System.out.println("evaluate: " +e.getMessage() + "\n" + e.getStackTrace());
			*/
			
			
			while (e != null) 
			{
				System.err.println(e.toString());
				System.err.println("SQL-State: " + e.getSQLState());
				System.err.println("ErrorCode: " + e.getErrorCode());
				e = e.getNextException();
			}
				  
			
			return false;
		}
		
		
		return evaluation;
	}

}


Mein Testcode:

Code:
public void init()
	{
		String sql ="select id, name, plz, ort from tabelle where loekz = 'N' ";
		String searchString = "Berlin";
		String searchColumnName = "ort";
		
		int intCounter = 1;
		
		this.frs = this.rec.getFilteredRowSet(sql);
		MyFilter filter = new MyFilter(searchString, searchColumnName);
		
		try
		{			
			this.frs.beforeFirst();
			this.frs.setFilter(filter);
			
			
			while(!this.frs.isLast())
			{
				this.frs.next();
				
				System.out.println("Datensatz " + intCounter + "   KLNR = " + this.frs.getInt("id"));
				System.out.println("------------------------------");
				
				System.out.println(this.frs.getString("name")+ ", ");
				System.out.print(this.frs.getString("plz") + ", ");
				System.out.print(this.frs.getString("ort"));
				
				System.out.println("\n");
				
				intCounter++;
			
			}
			
		}
		
		
		catch (SQLException e) 
		{
			
			while (e != null) 
			{
			    System.err.println(e.toString());
			    System.err.println("SQL-State: " + e.getSQLState());
			    System.err.println("ErrorCode: " + e.getErrorCode());
			    e = e.getNextException();
 		  	}
 		  	
		}
	}


Und hier noch die Methode getFilteredRowSet:

Code:
public FilteredRowSet getFilteredRowSet(String sql)
	{
		
		try
		{
			
			this.stmt = this.cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
			this.rs = this.stmt.executeQuery(sql);
			
			this.frs = new com.sun.rowset.FilteredRowSetImpl();
			this.frs.populate(this.rs);
			
			//this.frs.first();
		
			
			return this.frs;
			
		}
		catch(Exception e)
		{
			System.out.println(e);
			return null;
		}
		
	}

Danke fuer Deine Unterstuetzung
 

ms

Top Contributor
Bitte prüfe in Zeile 64 ob columnValue == null ist. In deinem geposteten Code ist das jetzt die Zeile 36.

ms
 

FenchelT

Bekanntes Mitglied
So, habe nun mit isEmpty() geprueft ob der String null ist.
Wenn dann System.exit(0);

Laeuft weiterhin mit Fehler durch. Hier ein Ausschnitt aus der Ausgabe:


Datensatz 892 ID = 1134802
------------------------------
Klinik für Psychiatrie und Psychotherapie,
12099, Berlin



Datensatz 893 ID = 1142357
------------------------------
KlinikException in thread "main" java.lang.NullPointerException
at test.FilteredRowSet.MyFilter.evaluate(MyFilter.java:64)
at com.sun.rowset.FilteredRowSetImpl.internalNext(Unknown Source)
at com.sun.rowset.CachedRowSetImpl.next(Unknown Source)
at test.FilteredRowSet.MainCtrl.init(MainCtrl.java:43)
at test.FilteredRowSet.MainCtrl.<init>(MainCtrl.java:19)
at test.FilteredRowSet.Start.main(Start.java:30)
für Innere Med. VII,
13353, Berlin



Datensatz 894 ID = 1155912
------------------------------
Abt. Kinder- u. Jugendmedizin,
13589, Berlin
 

ms

Top Contributor
FenchelT hat gesagt.:
So, habe nun mit isEmpty() geprueft ob der String null ist.
Falsch.
Diese Methode prüft, ob der String die Länge 0 hat.
Wenn der String aber null ist wird bei Aufruf dieser und aller anderen Methoden eine NullpointerException geworfen.
Du musst mit columnValue == null prüfen.

ms
 

FenchelT

Bekanntes Mitglied
ms hat gesagt.:
FenchelT hat gesagt.:
So, habe nun mit isEmpty() geprueft ob der String null ist.
Falsch.
Diese Methode prüft, ob der String die Länge 0 hat.
Wenn der String aber null ist wird bei Aufruf dieser und aller anderen Methoden eine NullpointerException geworfen.
Du musst mit columnValue == null prüfen.

ms

Manchmal sieht man vor lauter Verzweiflung den Wald vor Baeumen nicht.
Natuerlich muss mit == geprueft werden :oops:

So und nun meine Frage an Dich, wohnst DU im Rheinland? Dann bekommst Du ein Bier von mir :applaus:
Man ist manchmal so blockiert im Kopf.

Es war tatsaechlich so, dass der Ort NULL war.
Da ich dies per se ausgeschlossen hatte, haette ich darauf niemals geprueft.

Orte sind immer dann NULL wenn Abteilungen in der gleichen Strasse im selben Ort untergebracht sind, wie die Haupteinrichtung.

Ich wollte die Abteilungen aber gar nicht selektieren.
So ist das, wenn man zu Testzwecken mal eben nen SQL zusammentippert :autsch:

if (alter > 30)
{
new alles_wird_anders();
}



Ich danke Dir vielmals fuer Deine Muehe.


Herzliche Gruesse
FenchelT
 

ms

Top Contributor
Bitte, keine Ursache.
Hab die Erfahrung gemacht, dass es in 99% aller Problemfälle an wirklich einfachen Dingen liegt.
Wenn NullpointerException dort steht, dann ist es auch eine. :D

Grüsse aus Wien
ms
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Cast-Fehler: Spring Data exists.... boolean??? Datenbankprogrammierung 1
T compiler fehler: should be mapped with insert="false" update="false" Datenbankprogrammierung 1
O Create Table per JDBC Fehler: ORA-00922 Datenbankprogrammierung 4
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
S MySQL Hibernate: Fehler bei Verwendung von 2 unterschiedlichen Enumration Datenbankprogrammierung 3
S @OneToMany @JoinTable failed to lazily initialize a collection Fehler Datenbankprogrammierung 2
C Oracle Fehler beim list.add() Datenbankprogrammierung 5
das_leon MySQL Fehler bei der Zeitzone Datenbankprogrammierung 7
M SQL-Statement SQL mit Java, Update Fehler Datenbankprogrammierung 1
L MySQL Bekomme einen Fehler beim ResultSet Datenbankprogrammierung 12
DaCrazyJavaExpert Derby/JavaDB Unfindbarer Fehler im Datenbank-Code Datenbankprogrammierung 87
L SQL Fehler (Table/View does not exist) Datenbankprogrammierung 17
P MySQL JPA / MySQL - Fehler bei type=innoDB Datenbankprogrammierung 8
Thallius MySQL Wo ist der Fehler in dem Query? Datenbankprogrammierung 2
B JPA->fehler beim Insert in die Datenbank Datenbankprogrammierung 3
V Fehler beim Generierung Fehler beim Generierung java.lang.ArrayIndexOutOfBoundsException: 0 Datenbankprogrammierung 12
M MySQL-Syntax-Fehler Datenbankprogrammierung 1
H HSQLDB Beim öffnen folgender Fehler: ... java.lang.NullPointerException Datenbankprogrammierung 1
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
W Jackcess Fehler Datenbankprogrammierung 1
I Fehler bei Ausgabe der Daten aus der DB Datenbankprogrammierung 3
J SQL-Statement Meine insert befehle funktionieren nicht und ich weiß nicht wo der fehler liegt Datenbankprogrammierung 5
serjoscha MySQL Eine Instanz von eigenem DBWrapper -> Fehler durch mehrfachbenutzung möglich? Datenbankprogrammierung 2
M Wo ist mein Fehler ? o: Datenbankprogrammierung 4
C H2 Syntax fehler beim erstellen einer Tabelle Datenbankprogrammierung 4
T JDBC Fehler Datenbankprogrammierung 2
Neumi5694 Java + MS Access + 64 Bit = Fehler -1073740777 Datenbankprogrammierung 2
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
R Fehler 2601 trotz SQL-UPDATE ? Datenbankprogrammierung 2
B JDBC Connection Fehler Datenbankprogrammierung 8
J Fehler bei mySQL Query Datenbankprogrammierung 19
D Oracle PLSQL Block Fehler Datenbankprogrammierung 11
P SQL-Statement Bei meinem Statement ist ein Fehler? Datenbankprogrammierung 2
S Fehler mit JdbcRowSet Datenbankprogrammierung 2
A Oracle Unbekannter Fehler bei insert Befehl Datenbankprogrammierung 3
B MySQL Fehler: Cannot open connection mit Tomcat7, Hibernate und MySQL Datenbankprogrammierung 4
M PL/SQL Fehler "Kein Wert zurückgegeben" Datenbankprogrammierung 4
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
Crashbreaker MySQL MySQL - Hibernate gibt Fehler aus Datenbankprogrammierung 25
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
I Derby/JavaDB Update Fehler Datenbankprogrammierung 4
N Update Prepared Statement Fehler bei Argumenten Datenbankprogrammierung 3
D JDBC Fehler beim laden der nativen Bibliothek db2jcct2 Datenbankprogrammierung 9
N Oracle Fehler Ungültiges Zeichen Datenbankprogrammierung 2
jgh Zeichensatz-Fehler Datenbankprogrammierung 10
L Derby/JavaDB Fehler beim Erstellen einer Tabelle Datenbankprogrammierung 2
F hsqldb Fehler - unknown source Datenbankprogrammierung 11
E Fehler- Komme nicht auf Datenbank Datenbankprogrammierung 13
trash ResultSet Syntax Fehler Datenbankprogrammierung 11
trash JDBC Einbinden Fehler Datenbankprogrammierung 9
B Fehler in Stored Procedure Datenbankprogrammierung 7
E [ACCESS ODBC] INSERT INTO Fehler Datenbankprogrammierung 4
E Nach Server wechsel Datenbank fehler ?!? Datenbankprogrammierung 3
H Fehler bei null-Datum in MySQL-DB Datenbankprogrammierung 2
B SQL - Ich kann die Fehler nicht finden Datenbankprogrammierung 3
K DB2 Insert mit Subselect Fehler Datenbankprogrammierung 2
M Update mysql Fehler ?? Datenbankprogrammierung 4
T Fehler im SQL ... Datenbankprogrammierung 8
J Fehler bei Hibernate Configuration Datenbankprogrammierung 9
N group by fehler Datenbankprogrammierung 4
P SQL Fehler helft mir bitte Datenbankprogrammierung 12
F Fehler bei Stored Function Datenbankprogrammierung 2
S Fehler beim Auslesen von Daten Datenbankprogrammierung 6
C Wo ist der Fehler? Datenbankprogrammierung 5
H Fehler mit ". Microsoft Access Driver" Datenbankprogrammierung 12
K Fehler bei Rückgabewerten Datenbankprogrammierung 3
M Statemend Fehler Datenbankprogrammierung 11
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
E Seltsamer Fehler Datenbankprogrammierung 10
T Fehler bei Verbindungsaufbau zu MySql DB Datenbankprogrammierung 4
S Fehler bei DB Verbindung Access Datenbankprogrammierung 6
A JDBC-Fehler "Objekt bereits geschlossen" Datenbankprogrammierung 4
O SQL-Query bringt Fehler Datenbankprogrammierung 4
B MySql DELETE Anweisung gibt Fehler zurück Datenbankprogrammierung 7
A Fehler beim Starten des Servers für H2 Database Datenbankprogrammierung 13
A Fehler in der HSQLDB Datenbankprogrammierung 6
B fehler bei select befehl Datenbankprogrammierung 5
G SQL fehler -> woran liegt das? Datenbankprogrammierung 3
M Odbc und Fehler Datenbankprogrammierung 44
M Fehler bei der Verbindung zu einer MSSQL/Express Datenbank! Datenbankprogrammierung 17
D mySQL emullierte PreparedStatements haben Fehler unter Last Datenbankprogrammierung 3
R Fehler in der Eingabe? Datenbankprogrammierung 3
J Fehler bei Oracle-Datenbankverbindung Datenbankprogrammierung 2
E JDBC Oracle Fehler, zugriff auf datenbank (Cluster) Datenbankprogrammierung 5
P Fehler: result-set zeigt auf null, aber warum Datenbankprogrammierung 4
G Fehler in der select-Abfrage Datenbankprogrammierung 3
G Fehler beim Verbinden Datenbankprogrammierung 4
D Primary-Key -> Fehler: "Unique constraint violation& Datenbankprogrammierung 12
E Fehler in der SQL-Anweisung Datenbankprogrammierung 11
A Fehler in der Datenbankklasse Datenbankprogrammierung 14
M insert befehl funzt nicht!wo ist der fehler? Datenbankprogrammierung 5
N Fehler beim matchen von Strings via Query Datenbankprogrammierung 2
L komischer Fehler von ResultSet. Datenbankprogrammierung 2
R Fehler in Datenbankanbindung Servlet -> Access Datenbankprogrammierung 5
E Fehler bei String-Insert in MySQL-DB Datenbankprogrammierung 8
G Wo ist hier der Fehler (createStatement) Datenbankprogrammierung 2
M executeBatch() - Inserts trotz Fehler weitermachen Datenbankprogrammierung 5
W Fehler bei Insert Anweisung obwohl getestet Datenbankprogrammierung 3
J Fehler beim PreparedStatement Datenbankprogrammierung 2
H Java/Access - Fehler bei der Parameterübergbe Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben