日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android SQLiteDatabase分析

發布時間:2024/7/5 Android 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android SQLiteDatabase分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/Sailingthink/article/details/27691953

Android中的數據存儲使用的小巧的SQLite數據庫。為了方便java層使用SQLite,android做了大量的封裝,提供了一些列的類和API。本文章就揭露這些封裝背后的類圖關系。

老規矩,首先上圖:


SQLiteOpenHelper是Android SDK所提供的一個幫助類,通過此類來管理數據庫的創建和版本號控制。

通過SQLiteOpenHelper函數getReadableDatabase和函數getWritableDatabase能夠得到一個SQLiteDatabase對象。用戶通過繼承SQLiteOpenHelper類,實現其抽象函數,以實現數據庫表格的創建。版本號的升級等功能。

從UML途中能夠看到SQLiteDatabase中有一個成員變量指向DatabaseErrorHandler接口。這個對象用來處理數據庫發生異常的case。我們能夠實現這個接口來處理數據的異常case,比方數據庫損壞打不開。就會調用到這個接口的onCorruption函數。


SQLiteDatabase提供了對數據庫的一些操作函數。比方query。insert。delete等。這里僅僅說一種case:query。途中綠色的線條代表著query的調用流程走向。通過SQLiteDatabse的query函數,能夠得到一個SQLiteCursor對象,它實現了Cursor接口。SQLiteCursor代表著查詢數據庫后的結果集。假設是本進程內調用SQLiteDatabse,那么得到Cursor接口實際上是SQLiteCursor對象,假設是跨進程,比方通過ContentProvider的query接口查詢一個Uri得帶一個Curosr接口,那么實際的對象將是一個支持跨進程通信的Cursor對象。這里就不做具體的描寫敘述了。在以后的文章中再單獨解說Cursor的結構體系。

SQLiteDatabse的一個特色是對多線程的訪問做了封裝。每一個線程都有保存著一個session。用來和數據庫通信。而實際的通信過程是seesion從connect pool中得到一個SQLiteConnection連接。通過這個連接來操作native層真正的數據庫。每次操作數據庫的時候都必須得到一個連接。

SQLiteConnectionPool控制了連接的類型。對于WAL模式的數據庫。僅僅能有一個可寫的連接,能夠有多個讀的連接。

這樣讀和寫就能夠同一時候進行了。當一個可寫的連接已經被占用了。假設此時有線程申請寫的連接,那么這個線程會進入等待隊列。直到有可利用的寫連接為止。對于journal mode的數據庫。4.2的代碼是僅僅同意有一個連接。

SQLiteProgram代表著一次對數據庫操作的各種資源。

它里面保存著SQL語句,所操作的數據庫對象,以及SQL語句所綁定的參數。


轉載于:https://www.cnblogs.com/ldxsuanfa/p/10919583.html

總結

以上是生活随笔為你收集整理的Android SQLiteDatabase分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。