0
如何使用密鑰(而不是主ID密鑰)更新表?通過greendao中的密鑰更新
我有客戶表,我正在獲取更新或創建的客戶數據。所以,對於新創建的數據,我使用insertOrReplace方法,它使用對象插入數據。
但是,爲了更新一個行,根據我的知識,我必須使用我擁有的密鑰來獲取行,然後更新行。如果沒有獲取行,不可能做到這一點,因爲每個這樣的行需要兩次操作。
如何使用密鑰(而不是主ID密鑰)更新表?通過greendao中的密鑰更新
我有客戶表,我正在獲取更新或創建的客戶數據。所以,對於新創建的數據,我使用insertOrReplace方法,它使用對象插入數據。
但是,爲了更新一個行,根據我的知識,我必須使用我擁有的密鑰來獲取行,然後更新行。如果沒有獲取行,不可能做到這一點,因爲每個這樣的行需要兩次操作。
由於您可以隨時編寫自己的sql語句並通過DaoSesseion.getDatabase()
執行它們,因此可以更新您的條目而無需先取得它。
由於greendao使用緩存,我強烈建議不要手動更新它,因爲緩存不會被更新,這反過來可能會產生很奇怪的應用程序行爲。
最重要的是,獲取條目的性能損失並不明顯。
總結:
手動更新讓你的代碼更復雜,可能會引入高速緩存的不一致和不只能提供很小的性能提升(如果它提高性能的話)。 因此,恕我直言,不要手動更新條目!
我問這個的原因是因爲我得到多個條目,需要更新其中的幾個。我想使用類似於updateInTx的東西。無論如何,感謝關於greendao緩存的解釋。 – Anuj
@Anuj如果您希望在一次交易中進行所有更新,您只需在第一次更新之前開始交易並在最後一次更新/錯誤後將其提交或回滾。格林道將認可您的交易並使用它。看到我的答案[這裏](http://stackoverflow.com/questions/23567985/android-java-outofmemory-while-inserting-a-huge-list-into-the-database-sql/23604766#23604766)。 – AlexS
我不知道。這就是我要找的。謝謝。 – Anuj