知識總結------數據存儲

1、SharePreferences適用情形?使用中需要注意什麼?

保存登錄用戶名密碼等情形,應注意多進程併發讀的時候數據可能不準確。

需要注意:getSharedPreferences(“User”, Context.MODE_PRIVATE)方法中第二個參數需要了解Android的四種枚舉方式下面是詳細的解釋: 

私有模式 

Context.MODE_PRIVATE 的值是 0; 

①只能被創建這個文件的當前應用訪問 

②若文件不存在會創建文件;若創建的文件已存在則會覆蓋掉原來的文件

 

追加模式 

Context.MODE_APPEND 的值是 32768; 

①只能被創建這個文件的當前應用訪問 

②若文件不存在會創建文件;若文件存在則在文件的末尾進行追加內容

 

可讀模式 

Context.MODE_WORLD_READABLE的值是1; 

①創建出來的文件可以被其他應用所讀取

可寫模式 

Context.MODE_WORLD_WRITEABLE的值是2 

①允許其他應用對其進行寫入。

2:瞭解SQLite中的事務處理嗎?是如何做的?

使用SQLiteDatabase的beginTransaction()方法可以開啓一個事務,程序執行到endTransaction() 方法時會檢查事務的標誌是否爲成功,如果程序執行到endTransaction()之前調用了setTransactionSuccessful() 方法設置事務的標誌爲成功則提交事務,如果沒有調用setTransactionSuccessful() 方法則回滾事務。多用於大量數據操作時,能明顯減少耗時。

https://blog.csdn.net/a443453087/article/details/7222247

3:使用SQLite做批量操作有什麼好的方法嗎?

即使用事務處理進行優化,默認SQLite的數據庫插入操作,如果沒有采用事務的話,它每次寫入提交,就會觸發一次事務操作,而這樣幾千條的數據,就會觸發幾千個事務的操作,這就是時間耗費的根源

 

4:如果現在要刪除SQLite中表的一個字段如何做?

SQLite目前還不支持drop column,所以必須想出另外一種方法來進行表字段的刪除。

如下sql語句會複製一個和record表一樣表結構的temp表出來,但是我們想要的是去除某一個字段(例如去除record表中的name字段,就不要複製它就好了),所以sql語句如下:

create table temp as select recordId, customer, place, time from record where 1 = 1;  

這樣複製出來的表就會缺少“name”字段,然後我們刪除舊錶並修改新表名即可。

5:使用SQLite時會有哪些優化操作?

https://blog.csdn.net/phenixyf/article/details/70597232

 

看一下這篇文章:https://www.jianshu.com/p/5223a77a2a32

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章