我正在嘗試更新我的表的現有列,但無法這樣做.... 沒有錯誤,只是沒有更新。我的代碼在下面
通過傳遞值 a 呼叫函式是我想要更改的 _id,而 i 是我想要插入的值。
boolean isUpdate = mDbHelper.updatedata(String.valueOf(a),String.valueOf(i));
我用來改變值的函式
public boolean updatedata(String id,String books){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(Lib_student.COLUMN_STUDENT_BOOKS,books);
Cursor cursor = db.rawQuery("select * from Library_Student where books=?",new String[]{books});
long r = db.update("Library_Student",contentValues,"books=?",new String[]{books});
if (r == -1){
return false;
}else {
return true;
}
}
這是我需要編輯的表格..
String SQL_CREATE_LIBRARY_TABLE_STUDENT = "CREATE TABLE " Lib_student.TABLE_NAME " ("
Lib_student._ID " INTEGER PRIMARY KEY AUTOINCREMENT, "
Lib_student.COLUMN_STUDENT_NAME " TEXT NOT NULL, "
Lib_student.COLUMN_STUDENT_EMAIL " TEXT, "
Lib_student.COLUMN_STUDENT_AGE " INTEGER , "
Lib_student.COLUMN_STUDENT_GENDER " TEXT ,"
Lib_student.COLUMN_STUDENT_NUMBER " INTEGER ,"
Lib_student.COLUMN_STUDENT_ADDRESS " TEXT ,"
Lib_student.COLUMN_STUDENT_BOOKS " INTEGER );";
uj5u.com熱心網友回復:
首先,不需要選擇要更新的行,因此洗掉此行:
Cursor cursor = db.rawQuery("select * from Library_Student where books=?",new String[]{books});
此外,您必須將id而不是 的值books作為引數傳遞給方法update():
public boolean updatedata(String id, String books) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(Lib_student.COLUMN_STUDENT_BOOKS, books);
return db.update("Library_Student", contentValues, Lib_student._ID " = ?", new String[]{id}) > 0;
}
該方法update()回傳更新的行(它從來沒有回報的多少-1),所以你必須比較,這個數字將0與收益true是否大于0或者false如果它是0。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/375469.html
標籤:爪哇 安卓 sqlite sql更新 android-sqlite
