我根据这个教程设置了一个SQLite数据库,将其更改为适合自己项目的样子:http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/
然而,该教程没有说明如何更新字段。我尝试过以下方法:
db = new NotesDatabaseHandler(ViewNoteActivity.this);
...
db.updateNote(new Note(identifier, editTextTitle.getText().toString(), editTextContent.getText().toString(), "Updated on: " + printStandardDate()));
虽然一直尝试但是运行应用后,记事本文件没有更新。
记事本类:
package com.timmo.notes;
class Note {
//private variables
private int _id;
private String _title;
private String _content;
private String _metadata;
// Empty constructor
public Note() {
}
// constructor
public Note(int id, String title, String content, String metadata) {
this._id = id;
this._title = title;
this._content = content;
this._metadata = metadata;
}
public int getID() {
return this._id;
}
public void setID(int id) {
this._id = id;
}
public String getTitle() {
return this._title;
}
public void setTitle(String title) {
this._title = title;
}
public String getContent() {
return this._content;
}
public void setContent(String content) {
this._content = content;
}
public String getMetadata() {
return this._metadata;
}
public void setMetadata(String metadata) {
this._metadata = metadata;
}
}
来自NotesDatabaseHandler():
// Updating single note
public int updateNote(Note note) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_TITLE, note.getTitle());
values.put(KEY_CONTENT, note.getContent());
values.put(KEY_METADATA, note.getMetadata());
// updating row
int ret = db.update(TABLE_NOTES, values, KEY_ID + " = ?",
new String[]{String.valueOf(note.getID())});
db.close();
return ret;
}
之前,我已经删除了这个笔记,然后再次添加,但是它被添加到数据库的末尾,而不是原来的位置。
那么问题来了,我该如何正确地更新我的一个笔记(联系人)呢?谢谢。
更新: 我尝试使用原始UPDATE:
public void updateNote(Note note) {
SQLiteDatabase db = this.getWritableDatabase();
String strSQL = "UPDATE "
+ TABLE_NOTES + " SET "
+ KEY_TITLE + "='" + note.getTitle() + "', "
+ KEY_CONTENT + "='" + note.getContent() + "', "
+ KEY_METADATA + "='" + note.getMetadata() + "'"
+ " WHERE " + KEY_ID + "='" + note.getID() + "'";
Log.d("SQL: ", strSQL);
db.execSQL(strSQL);
db.close();
}
但是仍然没有任何反应。我的日志输出如下:
UPDATE notes SET title='hello', content='there', metadata='Updated on: 09:48 AM - 08 Aug 2015' WHERE id='7'
我看不出有什么问题...
note.getID()
没有返回表中任何行的KEY_ID
列中相同的值。 - CommonsWare