【Android】數(shù)據(jù)庫(kù)SQLite知識(shí)匯總

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ū)-騰訊云

查詢方法參照

Android中關(guān)于SQLiteDataBase的query()方法參數(shù)詳解,, limit ? offset? 分頁(yè)用法_sqlitedatabse limit-CSDN博客

相關(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)
);

SQLite SQLite 中的復(fù)合鍵|極客筆記

使用 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ù)文件


2023-10-07-11-23-51-image.png

找到包名 -> database

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


2023-10-06-14-51-35-image.png
2023-10-07-12-25-12-image.png

打開(kāi)數(shù)據(jù)庫(kù)文件

3、插件Database Navigator

Android 使用adb shell 和android studio插件Database Navigator查看sqlite數(shù)據(jù)庫(kù)_android database shm wal文件怎么查看-CSDN博客

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ā)生故障的情況下仍然存在。

索引

SQLite 索引 | 菜鳥(niǎo)教程

Sqlite索引_sqlite 索引-CSDN博客

數(shù)據(jù)庫(kù)加密-第三方加密開(kāi)源庫(kù)SQLCipher

Android數(shù)據(jù)存儲(chǔ)之SQLCipher數(shù)據(jù)庫(kù)加密 - 總李寫(xiě)代碼 - 博客園

恢復(fù)與備份

Android SQLite 的恢復(fù)與備份_sqlite備份與還原-CSDN博客

源碼

SQLite源碼解析 - 簡(jiǎn)書(shū)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容