更新一行数据sqlite android

时间:2013-09-01 21:11:23

标签: android android-sqlite

我正在尝试更新我的数据库。它并没有真正更新。我认为这是由于我的更新命令

我的主要活动是listview活动。我在操作栏上有一个按钮,它基本上启动了一个带有两个编辑框的新活动。因此,一旦我单击该按钮,我就会创建一个新的数据库项。它最初设置为两个空字符串。在我的第二个活动中,我有一个保存按钮,可以将我的更改保存到文本框中

所以在我的主要活动将我带到第二个活动后,代码如下

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.note);

    // if new then create new db, else retrieve old database, right now
    // assume everything is new

    db = new DBHandler(this);
    nowAdd = new UENote("", "");
    db.addNote(nowAdd);
}

我通过此功能更新我的nowAdd联系人字符串

    public void updateColumnData() {
    // gets the strings from edittext
    EditText textTitle = (EditText) findViewById(R.id.editText1);
    EditText textSubject = (EditText) findViewById(R.id.editText2);

    // converts the string
    String titleString = textTitle.getText().toString();
    String subjectString = textSubject.getText().toString();

    nowAdd.setSubject(subjectString);
    nowAdd.setTitle(titleString);

    db.updateNote(nowAdd);

}

更新记录功能如下

    public int updateNote(UENote note) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_TITLE, note.getTitle());
    values.put(KEY_SUBJECT, note.getSubject());

    // updating row
    return db.update(TABLE1, values, KEY_ID + " = ? ",
            new String[] { String.valueOf(note.getID()) });
}

1 个答案:

答案 0 :(得分:3)

确保您在db.update()中传递的 id 与您要更新的内容完全相同。从代码段开始,您获取note.getID()的值的方式并不明显。您是否正在查询空记录以获取 id

假设KEY_IDauto incremented primary key,我会调试getID()以检查它是否返回您想要更新的记录的 id