SQLite完整知識(shí)
SQLite 數(shù)據(jù)類型 | 菜鳥(niǎo)教程
簡(jiǎn)介和基礎(chǔ)知識(shí)參照
(全網(wǎng)最細(xì))Android 本地儲(chǔ)存一(SQLite數(shù)據(jù)庫(kù)存儲(chǔ))
SQLiteOpenHelper基礎(chǔ)知識(shí)_wh義華的博客-CSDN博客
表的創(chuàng)建與刪除參照
Android-SQLite數(shù)據(jù)庫(kù)實(shí)例
增刪改查詳解參照
Android中數(shù)據(jù)存儲(chǔ)——SQLite數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)小爽的博客-CSDN博客
Android:SQLiteOpenHelper類(SQLlite數(shù)據(jù)庫(kù)操作)詳細(xì)解析-騰訊云開(kāi)發(fā)者社區(qū)-騰訊云
查詢方法參照
相關(guān)返回碼
SQLite 返回結(jié)果:成功、失敗和它們的含義_sqlite_ok-CSDN博客
多線程并發(fā)的處理方案
1、單例工具類
2、在每個(gè)操作數(shù)據(jù)庫(kù)的方法中加個(gè)鎖 ReentrantLock
其他
復(fù)合鍵的示例
CREATE TABLE students (
id INTEGER,
name TEXT,
age INTEGER,
PRIMARY KEY (id, name)
);
使用 Database Inspector 調(diào)試數(shù)據(jù)庫(kù)
使用 Database Inspector 調(diào)試數(shù)據(jù)庫(kù) ?|? Android Studio ?|? Android Developers
可視化工具
1、Database Inspector
使用Android Studio 4.1中內(nèi)置的Database Inspector這個(gè)工具
USB連接手機(jī)--->View--->Tools Windows-->Database Inspector
2、dbeaver 使用
1)導(dǎo)出需要查看的數(shù)據(jù)庫(kù)文件

找到包名 -> database
導(dǎo)出需要查看的數(shù)據(jù)庫(kù)文件(.db結(jié)尾)
2)


打開(kāi)數(shù)據(jù)庫(kù)文件
3、插件Database Navigator
SqLite的相關(guān)問(wèn)題
1. SQLite中的事務(wù)處理是怎么做的?
SQLite在進(jìn)行增刪改數(shù)據(jù)時(shí)都默認(rèn)開(kāi)啟了事務(wù),然后把SQL語(yǔ)句翻譯成SQLiteStatement并調(diào)用其增刪改方法。此時(shí)整個(gè)操作還是在臨時(shí)表(rollback journal)上進(jìn)行的,只有整個(gè)操作順利完成后,才會(huì)更新正式的數(shù)據(jù)庫(kù)文件,否則就會(huì)被回滾。
2. 如何提高SQLite中批量操作的效率?
使用SQLite事務(wù)可以提高批量操作的效率。使用db.beginTransaction()開(kāi)啟事務(wù),然后進(jìn)行批量操作,操作完成后調(diào)用db.setTransactionSuccessful()設(shè)置事務(wù)成功,最后調(diào)用db.endTransaction()結(jié)束事務(wù)。
3. 怎樣才能刪除SQLite表中的字段?
SQLite不支持直接刪除表的字段(why?),只能根據(jù)原表復(fù)制一個(gè)新表,保留需要的字段,再將原表刪除,最后重命名新表即可。
4. 使用SQLite時(shí),可以進(jìn)行哪些優(yōu)化操作?
使用事務(wù)進(jìn)行批處理操作;
操作完成及時(shí)關(guān)閉Cursor,避免內(nèi)存泄漏;
對(duì)耗時(shí)操作進(jìn)行異步處理。數(shù)據(jù)庫(kù)讀寫(xiě)屬于I/O操作,通常比較耗時(shí),大量的數(shù)據(jù)庫(kù)操作建議放入異步線程處理。
合理設(shè)置ContentValues的初始容量,避免擴(kuò)容浪費(fèi)。ContentValues內(nèi)部基于
HashMap,初始容量為8,容量不足時(shí)會(huì)進(jìn)行雙倍擴(kuò)容。建議為ContentValues設(shè)置一個(gè)合理的初始容量,避免擴(kuò)容造成內(nèi)存浪費(fèi)。使用索引加快查詢速度:對(duì)于查詢量較大或性能要求較高的查詢操作,建議為數(shù)據(jù)建立索引,以加快查詢速度。
5. 使用SQLite時(shí),哪些情況不適合使用索引?
使用索引可以加快查詢數(shù)據(jù)速度,但會(huì)減慢增加、刪除、修改數(shù)據(jù)的速度。以下情況不適合使用索引:
- 數(shù)據(jù)量較小的表;
- 有頻繁更新需求的表;
- 含有大量NULL值的列。
事務(wù)的屬性
事務(wù)(Transaction)具有以下四個(gè)標(biāo)準(zhǔn)屬性,通常根據(jù)首字母縮寫(xiě)為 ACID:
原子性(Atomicity):確保工作單位內(nèi)的所有操作都成功完成,否則,事務(wù)會(huì)在出現(xiàn)故障時(shí)終止,之前的操作也會(huì)回滾到以前的狀態(tài)。
一致性(Consistency):確保數(shù)據(jù)庫(kù)在成功提交的事務(wù)上正確地改變狀態(tài)。
隔離性(Isolation):使事務(wù)操作相互獨(dú)立和透明。
持久性(Durability):確保已提交事務(wù)的結(jié)果或效果在系統(tǒng)發(fā)生故障的情況下仍然存在。
索引
數(shù)據(jù)庫(kù)加密-第三方加密開(kāi)源庫(kù)SQLCipher
Android數(shù)據(jù)存儲(chǔ)之SQLCipher數(shù)據(jù)庫(kù)加密 - 總李寫(xiě)代碼 - 博客園
恢復(fù)與備份
Android SQLite 的恢復(fù)與備份_sqlite備份與還原-CSDN博客