2014-09-13 1 views
0

java를 처음 사용했습니다. java-mongodb를 사용하여 창 빌더에서 검색을 수행하고 있습니다.Mongo Db 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 루프에 들어가면 DB 객체가 인쇄되지 않습니다.

제발이 방법을 제안 해주세요. 미리 감사드립니다 ...

+0

로그를 게시 할 수 있습니까? –

+0

완전한 스택 추적을 보여주십시오. 우린 초능력이 아니야. – hexafraction

답변

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

+0

@ user3462650 도움이된다면 답을 수락하는 것을 잊지 마십시오. :) – Lelouchzqy