android - 当我搜索表中不存在的名称时,我的 android sqlite 数据库应用程序关闭

标签 android sqlite android-sqlite

这是一个代码/方法来查找表中是否存在某个名称..

Contact getContact(String name) {
SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
            KEY_NAME, KEY_PH_NO }, KEY_NAME + "=?",
            new String[] { String.valueOf(name) }, null, null, null, null);
    if (cursor != null)
        cursor.moveToFirst();

    Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
            cursor.getString(1), cursor.getString(2));

    db.close();
    cursor.close();
    // return contact
    return contact;
}

我已经有了一个函数来获取 arrayList 中的所有名称。我可以在调用上面的函数之前调用它来解决我的问题。但我想问一下有没有其他(直接)方法可以做到这一点

最佳答案

当您调用 cursor.moveToFirst() 时,如果存在有效结果,它将返回 true,否则返回 false结果被发现。如果 cursor.moveToFirst() 返回 false,则调用任何 getXXX() 方法都会失败。

尝试这样的事情:

if( cursor.moveToFirst() )
{
    Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
        cursor.getString(1), cursor.getString(2));
}
cursor.close();

请注意,SQLiteDatabase.query 返回的Cursor 保证非空

关于android - 当我搜索表中不存在的名称时,我的 android sqlite 数据库应用程序关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14024202/

相关文章:

java - float : it does not return the fraction 的问题

android - 删除行 onclick 时房间数据库出错

java - 避免 SQLite 中的连接池关闭

android - Android 中的 SQLIte 来自 Assets 文件夹

android - 从 GPS 获取位置并在 android 中的谷歌地图上设置标记

java - 每个 android 的 ConcurrentModificationException

android - 创建sqlite数据库时出现空指针异常

javascript - 跨浏览器平台数据存储

java - 我应该在哪里/什么时候创建一个表作为我的程序的基础?

database - 没有绝对路径的Qt SQLite数据库