我的数据库有趣的错误

时间:2013-04-13 23:58:28

标签: android

我的应用程序是联系人书,最后一切都运行良好,但当我,“用户”,添加新的联系我强行关闭..但应用程序没有关闭,而是刚刚重新启动!当我检查联系人列表时,我看到我试图添加的内容真的被添加了!  logcat说错误在这里:

return cursorToContact(cursor);

它是此添加功能的一部分:

    /** Add new Contact to Database. */
public Contact createContact(Contact contact) {
    //Used to store data like : COLUMN_NAME , VALUE.
    ContentValues values = new ContentValues();
    values.put(MySQLiteHelper.COLUMN_FIRST_NAME, contact.getFirstName());
    values.put(MySQLiteHelper.COLUMN_LAST_NAME, contact.getLastName());
    //Insert new contact and get the id of it.
    long insertId = database.insert(MySQLiteHelper.TABLE_NAME_FTS, null,
            values);
    //To show how to query (To get contact by it id).
    Cursor cursor = database.query(MySQLiteHelper.TABLE_NAME_FTS,
            allColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, 
                             null,
            null, null, null);
    //Move Cursor to the first row.
    cursor.moveToFirst();
    return cursorToContact(cursor);
}

为什么会发生这种情况>请帮助我  请注意我正在使用sqlite fts3数据库

cursorToContact:

    /** Used to get Contact data from Cursor to Memo Object. */
private Contact cursorToContact(Cursor cursor) {
    Contact contact = new Contact();
    contact.setId(cursor.getLong(0));
    contact.setFirstName(cursor.getString(1));
    contact.setLastName(cursor.getString(2));
    return contact;
}

1 个答案:

答案 0 :(得分:2)

这一行实际上将数据添加到您的数据库中:

   long insertId = database.insert(MySQLiteHelper.TABLE_NAME_FTS, null,
            values);

之后发生的任何事情都是偶然的(主要是)。

如果您的查询搞砸了,您的其他部分将会失败。您的查询:

Cursor cursor = database.query(MySQLiteHelper.TABLE_NAME_FTS,
        allColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, 
                         null,
        null, null, null);

看起来合适。但是,allColumns可能会混乱。

另外,我不确定为什么你会在CursorToContact中设置新联系人的麻烦,只返回其他一些值。

    /** Used to get Contact data from Cursor to Memo Object. */
private Contact cursorToContact(Cursor cursor) {
    Contact contact = new Contact();
    contact.setId(cursor.getLong(0));
    contact.setFirstName(cursor.getString(1));
    contact.setLastName(cursor.getString(2));
    return contact;
}

你从不使用联系方式。我希望你能归还它。