Ich verwende Mongodb, um Informationen über Benutzer zu speichern. Ich wollte eine Methode erstellen, die die Informationen aus der Datenbank abruft, Player-Objekte erstellt und sie in ein Array von Playern einfügt.
dies ist die folgende Methode
public ArrayList<Player> getArrayOfPlayers(){
ArrayList<Player> savePlayers = new ArrayList<Player>();
DB db = connectToMongo();
DBCollection coll = db.getCollection("players");
DBCursor cursor = coll.find();
while(cursor.hasNext()) {
String tempName = (String)cursor.next().get("name");
String tempSession = (String)cursor.next().get("session");
String tempStringScore = (String)cursor.next().get("score");
int tempScore = Integer.parseInt(tempStringScore);
Player player = new Player(tempName,tempSession,tempScore);
savePlayers.add(player);
}
return savePlayers;
}
Ich habe 4 Benutzer in der Datenbank gespeichert und wenn ich versuche, zuerst die Methode aufzurufen und dann die Namen zum Beispiel zu drucken, erhalte ich eine Ausnahme. Ich habe ein try-catch außerhalb der Methode while verwendet und die Ausnahme abgefangen, aber dann wurde nur der Name des ersten Benutzers gedruckt. Es scheint, dass es die Ausnahme in der zweiten Iteration auslöst.
Hier ist die Nachricht mit der Ausnahme, die ich erhalte.
java.lang.RuntimeException: no more
com.mongodb.DBApiLayer$Result.next(DBApiLayer.java:394)
com.mongodb.DBApiLayer$Result.next(DBApiLayer.java:360)
com.mongodb.DBCursor._next(DBCursor.java:445)
com.mongodb.DBCursor.next(DBCursor.java:525)
machine.DAOMongodb.getArrayOfPlayers(DAOMongodb.java:74)
machine.testDB.doGet(testDB.java:43)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)