我想在android上使用更新(String table,ContentValues values,String whereClause,String [] whereArgs)方法更新SQLite中的一行。我在這個引用中看到了很多來源,並且在網絡上的其他地方描述瞭如何這樣做,但似乎並不奏效。我的主要問題是我對傳遞給方法的最後兩個變量缺乏瞭解,以及如何正確設置它們。使用更新方法更新SQLite行
String whereClause:這是幹什麼的?傳遞null可以更改列中的所有值,但是如果只想切換一行,例如sql數據庫中的行「x」,那麼該怎麼辦?這將如何完成? String [] whereArgs:這是做什麼的?
代碼
//how do you edit variable NOTE_TEXT at pos to be editedNote
public void editNotes(int pos, String editedNote){
SQLiteDatabase db = helper.getWritableDatabase();
String postion = Integer.toString(pos);
ContentValues newContentValues = new ContentValues();
newContentValues.put(NoteDBHelper.NOTE_TEXT, editedNote);
db.update( "noteTable", newContentValues, NoteDBHelper.NOTE_TEXT + " = " + postion, null);
}
static class NoteDBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "noteDB";
private static final int DATABASE_VERSION = 5;
private static final String TABLE_NAME = "noteTable";
private static final String UID = "_id";
private static final String NOTE_TEXT = "note";
private static final String DROP_TABLE = "DROP TABLE IF EXISTS " + TABLE_NAME + "";
/* private static final String CREATE_TABLE = "CREATE TABLE "+ TABLE_NAME +
" (" + UID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_TEXT +
" VARCHAR(255),);";*/
private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + UID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_TEXT + " VARCHAR(255) );";
public NoteDBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_TABLE);
} catch (SQLiteException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
try {
db.execSQL(DROP_TABLE);
onCreate(db);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
對不起,我想我的措辭我的問題是錯誤的。我的意思是「x」是數據中的一行,例如第一行「x = 1,second」x = 2「或其他行。是否可以這樣做 – 2015-02-18 00:11:53
@Neil M. 如在自動如果是這樣的話,當你創建UID列時,你已經有了自動增量 因此,每行的ID將是唯一的 – Rhuarc13 2015-02-18 02:36:58
@NeilM如果你想找到ID爲2的列,你的'String whereClause = UID +「= 2」' – Rhuarc13 2015-02-18 02:40:08