0

コンテキストメニュー項目「編集」を使用してデータを更新しようとしているので、Androidは初めてです。EDITを使用してEditTextレイアウトに移動し、update Noteを押しますが、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();
        }

    }

提案してください、私はデータベースコードを修正する必要があると思います。提案してください。ありがとう

4

3 に答える 3

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);

于 2013-01-10T08:06:40.680 に答える
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ドキュメントを確認してください。

于 2013-01-10T08:03:24.817 に答える
0

最後の引数で更新するには、行IDを渡す必要があります

db.update(Table_Notepad, updatenote, Col_ID + "=?", new String[]{id});

ハッピーコーディング

于 2013-01-10T08:04:55.417 に答える