我的应用程序是联系人书,最后一切都运行良好,但当我,“用户”,添加新的联系我强行关闭..但应用程序没有关闭,而是刚刚重新启动!当我检查联系人列表时,我看到我试图添加的内容真的被添加了! 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;
}
答案 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;
}
你从不使用联系方式。我希望你能归还它。