检查SQLite Android中是否存在数据

时间:2013-09-19 16:22:46

标签: android sqlite

我使用此函数从SQlite获取特定数据:

SearchRes getSresultByName(String name) {
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_WIKIRES, new String[] { KEY_ID,
            KEY_SNAME, KEY_SJSON }, KEY_SNAME + "=?",
            new String[] { name }, null, null, null, null);

    if (cursor != null)
        cursor.moveToFirst();

    SearchRes searchres = new SearchRes(Integer.parseInt(cursor.getString(0)),cursor.getString(1), cursor.getString(2));

    return searchres;
}

它工作得很好,我需要创建类似的函数来测试表中是否存在值,所以我尝试了这个:

boolean checkIfExist(String name) {
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_WIKIRES, new String[] { KEY_ID,
            KEY_SNAME, KEY_SJSON }, KEY_SNAME + "=?",
            new String[] { name }, null, null, null, null);


    if (cursor == null)
        return false;

    else
        return true;

}

但我总是得到正确的。你能帮我解决一下这个问题吗?

2 个答案:

答案 0 :(得分:6)

你不应该检查游标是否为空,你应该检查游标中是否存在任何内容

if(cursor.moveToFirst()){
    return true
}else{
    return false;
}

答案 1 :(得分:2)

您可以尝试Cursor getCount()来检查查询结果中的行数。以下是示例代码:

boolean checkIfExist(String name) {
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_WIKIRES, new String[] { KEY_ID,
            KEY_SNAME, KEY_SJSON }, KEY_SNAME + "=?",
            new String[] { name }, null, null, null, null);


    if (cursor.getCount() > 0)
        return true;

    else
        return false;

}
@tyczj的答案也很好..