x_m*_*ras 7 java exception mongodb mongodb-java
我正在使用mongodb来存储用户的信息.我想创建一个从db获取信息的方法,创建Player对象并将它们插入到一个Players数组中.
这是以下方法
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;
}
Run Code Online (Sandbox Code Playgroud)
我有4个用户存储在数据库中,当我试图首先调用该方法,然后打印名称,例如我得到一个例外.我在方法之外使用了try-catch,但是我抓住了异常,但之后它只打印了第一个用户的名字.它似乎在第二次迭代中抛出异常.
这是除了我收到的例外的消息.
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)
Run Code Online (Sandbox Code Playgroud)
调用cursor.next()方法可以获得下一个元素并增加光标位置.cursor.next()每次迭代调用3次,因此在第二次迭代时,光标中有"不再"元素.将元素保存在迭代的本地变量中:
while(cursor.hasNext()) {
DBObject tobj = cursor.next();
String tempName = (String)tobj.get("name");
String tempSession = (String)tobj.get("session");
String tempStringScore = (String)tobj.get("score");
int tempScore = Integer.parseInt(tempStringScore);
Player player = new Player(tempName,tempSession,tempScore);
savePlayers.add(player);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2835 次 |
| 最近记录: |