2014-09-13 62 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