Mongo Db Java Query中的运行时异常

时间:2014-09-13 13:24:40

标签: java mongodb runtimeexception windowbuilder

我是java的新手。 我正在使用java-mongodb在window-builder中进行搜索。

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

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。

请建议我一些方法来做到这一点。提前谢谢..

1 个答案:

答案 0 :(得分: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()方法的对象