Android 我的数据库出现了一个有趣的错误

Android 我的数据库出现了一个有趣的错误,android,Android,我的应用程序是通讯录,最后一切都很好,但当我“用户”添加新联系人时,我得到了强制关闭。。但是应用程序没有关闭,只是重新启动了!当我查看联系人列表时,我发现我试图添加的内容确实已添加!!! logcat说错误在这里: return cursorToContact(cursor); 它是此添加功能的一部分: /** Add new Contact to Database. */ public Contact createContact(Contact contact) { //Us

我的应用程序是通讯录,最后一切都很好,但当我“用户”添加新联系人时,我得到了强制关闭。。但是应用程序没有关闭,只是重新启动了!当我查看联系人列表时,我发现我试图添加的内容确实已添加!!! 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数据库

光标联系人:

    /** 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;
}

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

   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;
}

你从不使用接触。我希望您能将其返回。

用trackback发布错误,否则无法知道原因。
联系人
类在哪里定义?@H4F-我编辑了它,因为它很难理解。请至少大写“我试过这个,我想要XYZ”,而不是“我试过这个,我想要XYZ”。但这是一个好问题。@Adel>>糟糕的英语,我没有记下,谢谢alot@gipi对不起,你是什么意思?错误的第一行是:android.database.CursorIndexOutOfBoundsException:请求索引0,大小为0感谢上帝,我最终通过以另一种方式检测数据集的结尾来解决它:cursor.moveToFirst();while(!cursor.isAfterLast()){contact=cursorToCONTACT(cursor);//将光标移动到下一行。cursor.moveToNext();}//确保关闭光标光标。close();回接@H4F-我认为哈尔故意离开
返回备忘录中的代码来说明问题。当无效语法被删除时,上面的描述就没有那么有意义了。“但看到H4F改变了它确实让我感觉好多了。”Leigh return memo;这是一个“写错误”,所以我在我的问题和头发修复它answer@HaIR请你看看这个问题,谢谢。