【问题标题】:MongoDB giving NullPointerExceptionMongoDB 给出 NullPointerException
【发布时间】:2014-03-17 22:03:10
【问题描述】:

我的代码有问题。我在 Mongo 中有一组对象,所有这些对象都有一个“名称”、“描述”、“imageURL”、“代码”。

我想搜索我的收藏并返回包含所有名称、描述、代码和图像 URL 的 ArrayList

我试过这样

else{
            DBCursor cursair = this.searchItem(code);
            while(cursair.hasNext()){
                this.searchNames = new ArrayList<String>();
                this.searchBarcodes = new ArrayList<String>();
                this.searchDescriptions = new ArrayList<String>();
                this.searchImageURLs = new ArrayList<String>();                 
                this.searchNames.add(cursair.curr().get(ITEMS_NAME).toString());
                this.searchDescriptions.add(cursair.curr().get(ITEMS_DESCRIPTION).toString());
                this.searchImageURLs.add(cursair.curr().get(ITEMS_IMAGEURL).toString());
                this.searchBarcodes.add(cursair.next().get(ITEMS_CODE).toString());
            }

我有一个问题,因为它在this.searchNames.add(cursair.curr().get(ITEMS_NAME).toString()); 给了我一个 NullPointerException。 ITEMS_NAME是代码中定义的String常量。

searchItem(code) 方法如下所示

public DBCursor searchItem(String searchQuery){

    BasicDBObject query = new BasicDBObject();
    query.put(ITEMS_NAME, java.util.regex.Pattern.compile(searchQuery));
    DBCursor cursor = itemsCollection.find(query);
    return cursor;
}

我还检查了我的调试器,当我调用 cursor.toArray() 时,它返回一个大小为 5 的 List&lt;DBObject&gt;,所以我对游标本身具有正确的信息非常有信心

【问题讨论】:

  • 发布堆栈跟踪。需要注意的是,调试复合语句要困难得多。有四个不同的项目可能是null
  • 很抱歉,堆栈跟踪没有提供任何有用的信息。下面的答案也帮助了我,但感谢您的帮助!

标签: java android mongodb nullpointerexception database


【解决方案1】:

您想调用 cursair.next() 作为 while 循环的第一步,并使用返回的 DBObject 来提取数据。

【讨论】:

    猜你喜欢
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多