# ResultSet prüfen,ob es leer ist oder ob vorhanden



## kingpin166 (28. Apr 2006)

Hallo,

ich möchte eine Abfrage alle Usernamen in meiner Datenbank mit einem eingegebenen vergleichen. 


```
public boolean doubleNick(String nickname) {
		connect.verbinden();
		try {
			Statement stmt = connect.conn.createStatement();

			ResultSet rs = stmt
					.executeQuery("SELECT nickname FROM userTable WHERE nickname = '"
							+ nickname + "'");

			rs.first();
			String teststring = rs.getString(1);
			if (teststring == "") {
				return false;
			} else {
				System.out.println("Doppelter Nick gefunden... zieh Leine");
				return true;
			}

		} catch (SQLException e) {
			System.out.println("Fehler im SQL Statement " + e);
			return true;
		}
	}
```

Er meckert an : " Illegal Operation on empty ResultSet. 

Ich denke mir also, dass wenn der Nickname noch nicht in der DB steht und kein Datensatz ausgelesen werden konnte, dann auch kein ResultSet vorhanden ist, bzw. dieses leer ist. Wie kann ich das abfangen ?
Der "else" Zweig funktioniert hingegen.


----------



## Bert Brenner (28. Apr 2006)

wie währs mit:

select count(*) from userTable where nickname='tralala'?

übrigends den inhalt von Strings vergleicht man mit equals.


----------



## Kawa-Mike (28. Apr 2006)

select count(*) ist hier die beste Lösung. Dann hast du immer einen Rückgabewert, den kannst du mit rs.getgetInt(1) abfragen.
Dein Beispiel funktioniert nur, wenn wirklich ein Datensatz gefunden wird. Wenn nicht gibt es einen Fehler. 
In Resultsets solltest du immer prüfen ob ein Satz vohanden ist,
mit rs.next().
Typischerweise sieht es so aus:
while(rs.next()){
   String s = rs.getString( ??? )
   tue irgenetwas
}


----------

