我的代码在更新数据方面遇到问题。在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();
}
}
答案 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。你也可以通过函数