有沒有一種簡單的方法來更新android中的sqlite表? (像建立方法中的單行)?我有一個有幾列的表,主要是一列。我想按主鍵搜索,然後更新表中的一行。sqlite數據庫更新
回答
您可以使用rawQuery
這樣的:
cur = mDb.rawQuery("update " + TABLE_NAME
+ " set column1=mango where id='" + _id + "'",null);
其中
cur
是Cursor
對象TABLE_NAME
是NAME OF THE TABLE
_id
是name of the column
(只是舉例)
要使用預定義的更新使用方法在Android,如下使用它:
ContentValues args = new ContentValues();
args.put("col_name", "new value");
db.update("table_name", args, String.format("%s = ?", "primary_column"),
new String[]{"primary_id"});
或者作爲一個單獨行,去與這個(不推薦):
db.execSQL("UPDATE table_name SET col_name='new_value' WHERE
primary_column='primary_id'");
那麼你應該已經知道什麼是你的主鍵。
dbHelper.getWritableDatabase();
ContentValues values = createContentValues(profileVo);
db.update(ProfileVO.TABLE_NAME, values, ProfileVO.COLUMN_ID + "=" + profile.getId(), null)
這裏有一個很好的教程爲你http://www.vogella.com/articles/AndroidSQLite/article.html
的文檔,你應該像這樣結束:
affected = db.update(TABLE_NAME, values, where, whereArgs);
UDPATE
不惜一切代價避免使用容易出錯的語法進行原始查詢。我在這裏看到很多答案,使用了很多'"' + SOMETHING + "'"
......這是非常糟糕的做法,你會花費你所有的時間在很難找到的地方尋找錯誤,或者完全浪費時間。
如果您必須使用原始查詢,請嘗試使用String.format形成它們以避免危險的調試會話和偏移。
加上一個更新。始終更喜歡使用db.update()方法,而不是手動原始查詢。試圖存儲一個包含撇號的json也會讓你信服 – kouretinho
試試這個:
public void updateFunction(int id) {
String updateStmnt = "UPDATE YOUR_TABLE SET YOUR_COLUMN = "
+ id;
database.execSQL(updateStmnt);
}
希望這將有助於。
考慮使用string.format而不是'+'來表示字符串......它更清晰易讀,更不容易出錯 – Merlin
使用database.update
使簡單是這樣的:
ContentValues values = new ContentValues();
values.put(MySQLiteHelper.COLUMN_NAME, name);
values.put(MySQLiteHelper.COLUMN_JOB, job);
values.put(MySQLiteHelper.COLUMN_DATE_START, date_start);
database.update(MySQLiteHelper.TABLE_EMPLOYEES, values, MySQLiteHelper.COLUMN_ID+"="+id, null);
我知道這有點老了,但萬一有人需要另一種方式:我用這個
public boolean updateNote(Note note) {
SQLiteDatabase db = notesDbHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(NotesDbContract.NoteEntry._ID, note.getId());
contentValues.put(NotesDbContract.NoteEntry.COLUMN_NAME_TITLE, note.getTitle());
contentValues.put(NotesDbContract.NoteEntry.COLUMN_NAME_DSECRIPTION, note.getDescription());
int result = db.update(NotesDbContract.NoteEntry.TABLE_NAME,
contentValues,
NotesDbContract.NoteEntry._ID + "=?", new String[]{String.valueOf(note.getId())}
);
db.close();
return result > 0;
}
- 1. 更新數據庫SQLite的
- 2. Android SQLite數據庫更新
- 3. 更新iPhone SQLite數據庫
- 4. Android:更新SQLite數據庫
- 5. 更新SQLite數據庫android
- 6. 更新SQLite數據庫
- 7. sqlite數據庫更新
- 8. 當服務器數據庫更新時更新sqlite數據庫
- 9. SQLite數據庫不會更新數據
- 10. 更新SQLite數據庫中的數據
- 11. 如何在Sqlite數據庫中更新數據時更新ListFragment
- 12. Android SQLite數據庫在更新多個更新時未更新
- 13. 通過JSON更新iPhone SQLite數據庫
- 14. 我無法更新SQLite數據庫Android
- 15. sqlite不更新我的數據庫iOS
- 16. SQLite數據庫沒有更新
- 17. 如何更新SQLite數據庫
- 18. 更新sqlite數據庫Objective-c
- 19. 更新sqlite數據庫版本?
- 20. SQLite數據庫沒有更新
- 21. 更新SQLite數據庫導致錯誤
- 22. SQLite UPDATE命令不更新數據庫
- 23. iPhone SQLite數據庫沒有更新
- 24. SQLite數據庫更新行機器人
- 25. 無法更新的Android SQLite數據庫
- 26. SQLite數據庫 - 更新查詢
- 27. Sqlite數據庫沒有更新
- 28. 調用SQLite數據庫來更新UITableView
- 29. 更新的SQLite數據庫的圖像
- 30. 更新SQLite數據庫的問題
感謝。 :)非常感謝幫助隊友! :) – harsh
通過使用string.format來構建查詢,避免使用容易出錯的語法,例如'String.format(「update%s set column1 =%s where id ='%s'」,TABLE_NAME,「mango」,_ id) 「@Waqas的答案更加準確,因爲它允許在不更改代碼的情況下更新可變數量的字段。 – Merlin