Android:更新数据

时间:2016-01-06 12:58:33

标签: android sqlite

我的代码在更新数据方面遇到问题。在update类中,id是错误的,我已经在DatabaseHelper类中声明了它,但它仍然是错误的。请检查我的代码。

My DatabaseHelper class:


   public boolean updateData(long id, String new_question, String new_ans1, String new_ans2, String new_ans3, String new_ans4, SQLiteDatabase sqLiteDatabase )
        {
        ContentValues contentValues = new ContentValues();

            contentValues.put(AdminContact.Question.COLUMN_QUESTION, new_question);
            contentValues.put(AdminContact.Question.COLUMN_ANSWER1, new_ans1);
            contentValues.put(AdminContact.Question.COLUMN_ANSWER2, new_ans2);
            contentValues.put(AdminContact.Question.COLUMN_ANSWER3, new_ans3);
            contentValues.put(AdminContact.Question.COLUMN_ANSWER4, new_ans4);

           // String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?";
            //String[] selection_arg = {new_question};
           int i = sqLiteDatabase.update(AdminContact.Question.TABLE_QUIZ, contentValues, AdminContact.Question.ID + "=" + id, null);
            return i > 0;

        }



    upgrade class:

     public void updateData(View view)
        {
        helper = new DatabaseHelper(this);
            sqLiteDatabase = helper.getWritableDatabase();

            String question, ans1, ans2, ans3, ans4;

            question = New_Question.getText().toString();
            ans1 = New_Ans1.getText().toString();
            ans2 = New_Ans2.getText().toString();
            ans3 = New_Ans3.getText().toString();
            ans4 = New_Ans4.getText().toString();
            helper.updateData(id,question,ans1,ans2,ans3,ans4,sqLiteDatabase);
            Toast.makeText(getApplicationContext()," Successfully Updated", Toast.LENGTH_LONG).show();
            finish();

        }

    }

3 个答案:

答案 0 :(得分:1)

将代码名称替换为代码

中下面一行的列名
String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?";

替换为

String selection = AdminContact.Question.COLUMN_QUESTION + " LIKE ?";

答案 1 :(得分:0)

您可以使用查询语言对数据库运行简单查询。这是一个例子。

SQLiteDatabase db;
db.execSQL("create table if not exists "
                + "user"
                + "(_id integer primary key autoincrement, name text not null,  number text not null, "
                + "address text not null, status integer not null, date integer not null)");

是的,还有很多其他方法可以进行数据库操作。但对于初学者,我认为这种方法更容易。

答案 2 :(得分:0)

看着你的代码,你正在做一次更新,然后不要想

String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?";`

将是最好的方式,你应该使用id代替,我修改了代码。你可以看看。我还注释了代码的一部分

public int updateData(String new_question, String new_ans1, String new_ans2, String new_ans3, String new_ans4, SQLiteDatabase sqLiteDatabase ) {

ContentValues contentValues = new ContentValues();
contentValues.put(AdminContact.Question.COLUMN_QUESTION, new_question);
contentValues.put(AdminContact.Question.COLUMN_ANSWER1, new_ans1);
contentValues.put(AdminContact.Question.COLUMN_ANSWER2, new_ans2);
contentValues.put(AdminContact.Question.COLUMN_ANSWER3, new_ans3);
contentValues.put(AdminContact.Question.COLUMN_ANSWER4, new_ans4);

//  String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?";
//  String[] selection_arg = {new_question};

int count = sqLiteDatabase.update(AdminContact.Question.TABLE_QUIZ,   contentValues, KEY_ROWID + "=" + rowId, null);

return count;
}

我添加了KEY_ROWID + "=" + rowId,其中rowId是您要更新的特定内容的ID。你也可以通过函数

传递它