如何更新EditText值?

时间:2013-01-10 07:50:28

标签: android sql-update android-sqlite

我是android新手,因为我正在尝试使用上下文菜单项“EDIT”更新数据。使用EDIT我会转到EditText布局然后我会按更新注意,但它不会更新EditText数据。

我的代码数据库:

public void updateNote(String filename, String filedata, String duedate){

    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues updatenote = new ContentValues();
    updatenote.put(Col_File_Name, filename);
    updatenote.put(Col_File_Data, filedata);
    updatenote.put(Col_Due_Date, duedate);

    db.update(Table_Notepad, updatenote, Col_ID + "=?", null);
    db.close();
}

的活动:

case R.id.Save:


    String get_title = Title_Edit.getText().toString();
    String get_content = Content_Edit.getText().toString();
    String get_duedate = duedatetext.getText().toString();

    if(!get_title.equals("") || !get_content.equals(""))
    {


     if (!isEdit) {
            //if it isn't edit mode we just add a new note to db

             Database_Notepad db = new Database_Notepad(Add_Task.this);

             db.Create_Note(get_title, get_content, get_duedate);

        } else {
            //if this is edit mode, we just update the old note
             Database_Notepad db = new Database_Notepad(Add_Task.this);

             db.updateNote(get_title, get_content, get_duedate);

            db.close();
        }

    }

请建议,我想我需要更正数据库代码。请建议。感谢

3 个答案:

答案 0 :(得分:1)

您的函数updateNote需要您要更新的记录ID。

  

public void updateNote(int id,String filename,String filedata,String duedate){

代替

  

public void updateNote(String filename,String filedata,String duedate){

并比较整个记录的ID,它将检查并更新您的特定记录,更改您的功能函数如下所示:

public void updateNote(int id, String filename, String filedata, String duedate){

    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues updatenote = new ContentValues();
    updatenote.put(Col_File_Name, filename);
    updatenote.put(Col_File_Data, filedata);
    updatenote.put(Col_Due_Date, duedate);

    db.update(Table_Notepad, updatenote,  "rowid= "+id,, null);// rowid or name of your id column
    db.close();
}

并将id和其他参数一起传递。

使用

  

db.updateNote(id,get_title,get_content,get_duedate);

代替

  

db.updateNote(get_title,get_content,get_duedate);

答案 1 :(得分:0)

updateNode()中,您需要更改此更新或插入值:

public void updateNote(long rowId, String filename, String filedata, String duedate){

    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues updatenote = new ContentValues();
    updatenote.put(Col_File_Name, filename);
    updatenote.put(Col_File_Data, filedata);
    updatenote.put(Col_Due_Date, duedate);

    if (rowId >=0)
        db.update(Table_Notepad, updatenote, Col_ID + "=?", new String[] {""+rowId});
    else
        db.insert(Table_Notepad, null, updatenote);
    db.close();
}

然后,如果您创建新笔记,则可以致电:

updateNote(-1, filename, filedata, duedate);

如果您更新现有的,则必须传入ID:

updateNote(noteRowId, filename, filedata, duedate);

来源:检查这些Android docs

答案 2 :(得分:0)

需要在最后一个参数

中传递行ID以进行更新
db.update(Table_Notepad, updatenote, Col_ID + "=?", new String[]{id});

快乐编码