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