代码之家  ›  专栏  ›  技术社区  ›  yoav.str

SQL Android似乎有问题,如何从光标推断查询状态?

  •  0
  • yoav.str  · 技术社区  · 14 年前

    我有这个代码:

    private void insertValus() {
        ContentValues initialValues = new ContentValues();
    
        for (int i = 0 ; i < COUNTRIES.length ; i++){
    
            Character tmp = (Character)COUNTRIES[i].charAt(0);
    
            initialValues.put(VALUE, COUNTRIES[i]);
            initialValues.put(TYPE, "country");
            initialValues.put(LETTER,tmp.toString(tmp));
    
            db.insert(TABLE_NAME, null, initialValues);
        }
    }
    
    public boolean existInDataBase(String userChoice) {
        boolean returnval = true;
        //gameList[0]
    
        Cursor cursor = db.query(TABLE_NAME, new String[] {VALUE}
        ,VALUE+" like " + "'%"+ userChoice +"%'", null, null, null, null);
    
        if (cursor != null) // I always enter here even if the string is no country
            returnval = false;
    
        return returnval;
    }
    

    不管我插入什么,即使查询结果应该是假的(也就是说cursor==null)

    还有两个问题:

    1. 如何查看我在模拟器中构建的数据库?

    2. 我应该在应用程序外运行它,然后将其附加到应用程序吗?或者在第一次编译时,用户会承受一些开销(第一次使用这个应用程序时)?

    1 回复  |  直到 9 年前
        1
  •  0
  •   camperdave    14 年前

    首先,当您想要检查一个查询是否返回没有结果,而不是检查cursor==null时,您需要一个if语句,比如

    if(! doesMoveExist.moveToFirst())
    

    至少我是这样做的,而且看起来对我来说工作得很好。

    此外,对于模拟器,数据库存储在图像文件中,而不是作为硬盘上的单独文件。