可以在insert()
重寫的內容提供者方法中調用SQLiteDatabase
更新方法嗎?Android內容提供者 - 在插入方法內更新
11
A
回答
26
基本上它是好的,但因爲你沒有提供的代碼,我只可以發佈2種可能的方式爲它
第一:
// In your content provider
public Uri insert(...) {
long insertId = db.insert(...);
if(insertId == -1) {
// insert failed, do update
db.update(...);
}
}
二:
public Uri insert(...) {
long insertId = db.insertWithOnConflict(table, null, values, SQLiteDatabase.CONFLICT_REPLACE)
if(insertId == -1) {
// insert and update/replace failed
}
}
退房SQLiteDatabase供第四參數參考。在大多數情況下,最後一種方法應該是足夠的,除非您希望只有某些字段在行存在時被更新,並且如果不存在所有字段。
對於insertWithOnConflict最有用的需求可能是,你可以插入一行,如果它已經存在,忽略插入,而是返回已存在行的Uri /主鍵。
5
這是你的選擇,你在你的重寫方法中寫的。 所以,沒關係。
我不知道你在做什麼,但你也許想看看SQLiteDatabase
的replace()
方法。也許它更適合你的需求。
相關問題
- 1. 通過內容提供者插入行後更新listview
- 2. 內容提供者更新所有行
- 3. 內容提供者
- 4. android內容提供者的使用者
- 5. 意圖vs內容提供者在android
- 6. 默認啓動內容提供者Android
- 7. Android - 內容提供者查詢光標
- 8. android自定義內容提供者
- 9. android內容提供者權限
- 10. Android。內容提供者或數據庫?
- 11. 無法獲得內容提供者
- 12. android:內容提供者:服務崩潰凝視 - 無法獲取提供者sensordata.collector.SurveyDbProvider
- 13. 任何可以從FB內容提供者獲取狀態更新的方法?
- 14. Android的內容提供者由Kotlin提供
- 15. 內容提供者和內容觀察者同步
- 16. 內容提供者和內容觀察者示例?
- 17. 連續更新內容提供商值
- 18. Android內容提供商
- 19. android內容提供商
- 20. Android內容提供者*不是*在Android中?
- 21. 無法訪問Android內容提供商
- 22. 多個表格的內容提供者
- 23. 存儲在Android項目中的內容提供者在哪裏?
- 24. Android - 如何將與兩個表相關的數據傳遞給內容提供者的插入方法
- 25. 插入一行與Android內容提供商
- 26. 更新內容提供者後,如何通知所有聽衆有更新?
- 27. 內容提供者不與SqliteDatabase同步
- 28. 內容提供者資源$ NotFoundException
- 29. eclipse中的樹內容提供者
- 30. 內容提供者未知uri
好的我的問題是,我需要檢查一列是否存在A列中的某個值(A不是唯一鍵)。 如果是,我需要更新這一行。 – Mak 2010-11-26 12:53:51