2014-09-13 63 views
0

我是java新手。 我正在使用java-mongodb在窗口生成器中进行搜索。MongoDB运行时异常Java查询

当我执行下面的代码时,我得到运行时异常错误。

try{ 
    // To connect to mongodb server 
    MongoClient mongoClient = new MongoClient("localhost" , 27017); 
     // Now connect to your databases 
    DB db = mongoClient.getDB("Ticket"); 
       System.out.println("Connect to database successfully"); 
       DBCollection coll = db.getCollection("OnlineT"); 
       System.out.println("Collection created successfully"); 
       F_stn = (String)fm.getSelectedItem(); 
       T_stn = (String)to.getSelectedItem(); 
       BasicDBObject doc = new BasicDBObject("From",F_stn); 
       BasicDBObject doc1 = new BasicDBObject("To",T_stn); 
        DBCursor ser = coll.find(doc); 
        DBCursor ser2 = coll.find(doc1); 


        while(ser.hasNext()) 
        { 
         String data=ser.next().get("To").toString(); 
         System.out.println(data); 
         if(data.equals(T_stn)) 
         { 
          System.out.println("i m in"); 

          String dis=ser.next().toString(); 

          System.out.println(dis); 
          break; 
         } 
         else 
          System.out.println("No data found"); 


        } 
      } 

它工作正常,但是当它进入if循环时它没有打印DBobject。

请给我一些方法来做到这一点。提前致谢。

+0

你可以发布你的日志吗? – 2014-09-13 13:26:23

+0

向我们展示完整的堆栈跟踪。我们不是心灵的。 – hexafraction 2014-09-13 13:29:55

回答

0

在“if”循环中,您有: String dis = ser.next()。toString();

这使得你的光标移动到下一个现在的位置,并没有检查hasNext()。我认为这是问题

相反,你可以这样做:

while(ser.hasNext()){ 
    DBObject dbObject = ser.next(); 
    String data=dbObject.get("To").toString(); 
    System.out.println(data); 
    if(data.equals(T_stn)) 
        { 
         System.out.println("i m in"); 
         System.out.println(dbObject); 
         break; 
        } 
        else 
         System.out.println("No data found"); 

此外,你并不需要打印的toString()的println()会自动调用toString()方法对象

+0

谢谢先生,我弄错了。 – Naresh 2014-09-15 19:18:43

+0

@ user3462650 不要忘了接受答案,如果它可以帮助你:) – Lelouchzqy 2014-09-16 08:39:02