# Leeres ResultSet initialisieren



## PaulG (1. Okt 2012)

Hallo zusammen,
nach langem Googlen habe ich gehofft endlich eine Lösung zu finden. 
Siehe hier: http://www.java-forum.org/allgemeine-java-themen/31483-resultset-initialisieren.html

Ich habe in etwa das selbe Problem. 
Ich verwende für die Erstellung einer SPARQL Query verschiedene Methoden. 
Jede dieser Methoden ruft eine executeQuery Methode auf, welche ein ResultSet zurück gibt. 

Falls die Query nicht ausgeführt werden kann, gibt es eine Exception. 
Mein Resultset bleibt also null. 
Leider bekomme ich an anderen Stellen dann eine NullPointerException. 

Gut wäre es jedoch, dass das ResultSet nicht null sondern einfach leer wäre. 

Gibt es also eine Möglichkeit ein leeres ResultSet zu initialisieren?


```
private ResultSet exQuery (String endpoint, String sparqlQueryString){
		
		ResultSet results = null;			
		
		try{
			Query query = QueryFactory.create(sparqlQueryString);
			QueryExecution qexec = QueryExecutionFactory.sparqlService(endpoint, query);
			results = qexec.execSelect();
			qexec.close();			
		}
		catch (Exception e){
			
		}				
		return results; 	// hier leeres ResultSet	
	}
```


----------



## ssoul26 (1. Okt 2012)

Was spricht dagegen, vor einer Verarbeitung immer abzufragen, ob das Resulset null ist oder nicht?


----------



## SlaterB (1. Okt 2012)

kannst du ein volles ResultSet überhaupt nutzen wenn die Query geschlossen ist?
ist das normales JDBC oder eine andere API?

kannst du irgendwann zu Programmstart eine spezielle Query absetzen,
"SELECT * from x wher id > 0 and id < 0"
ohne Fehler mit offensichtlich leerer Rückgabe, dieses ResultSet merken, öfters zurückgeben,
oder passt es nicht, da z.B. falsche MetaDaten für Spalten usw.?
solche MetaDaten kannst du für eine kaputte Query allerdings auch kaum erwarten


ansonsten ist es ja ein Interface, erstelle dir eine Klasse dazu, 
vielleicht nur wenige Methoden zu implementieren, die false oder 0 zurückgeben, 
noch nicht als Möglichkeit betrachtet oder welches Problem/ Unschönheit dabei?

edit:
alternativ wäre, wenn nicht null-Test, wie schon vorgeschlagen wurde, 
es günstig, gar nicht erst auf ResultSet in der weiteren Verarbeitung zu setzen,
sofern die Wahl besteht eine eigene Klasse für Ergebnisse einführen, alle Daten dort hineinkopieren,
dann ist es in deiner Macht ob leer für keine Ergebnisse


----------



## PaulG (1. Okt 2012)

Danke für eure Beiträge.

Ich verwende jena für die Anfragen auf DBpedia. 
Eine Abfrage ob das ResultSet != null ist wäre natürlich eine Möglichkeit.

Meine Idee war es eine Klasse zu haben mit der ich beliebige Anfragen starten kann. 
Also die gesuchten Dinge erst beim Aufruf festlege. 
Deswegen wäre es sehr praktisch jeglichen Mehraufwand mit Error Handling zu um gehen indem ich ein
leeres Ergebnis zurück gebe


----------



## bone2 (2. Okt 2012)

null ist leer und so üblich. oder eher garkein resultset sondern collections irgendeiner art.

ist es kein fehler wenn zb kein user gefunden? keine datenbank gefunden wurde? der query syntax fehler hat? man kann auch einfach die exception durchwerfen


```
catch (Exception e){
            
        }
```
ist ein übles tabu


----------



## PaulG (2. Okt 2012)

Alles klar, danke für eure Hilfe!
Ich denke ich werde nicht daran vorbei kommen den Fehler zu behandeln. 

"Exception e", jupp das war nur damit ich mal alles catchen kann was kommt


----------



## bone2 (2. Okt 2012)

das 
	
	
	
	





```
Exception e
```
 wäre noch zu verschmerzen, aber den fehler dann ohne den kleinsten hinweis zu verschlucken ist ...


----------

