手把手教你用ManagedSQLiteOpenHelper實現資料庫
kotlin
Android
搜尋歷史功能
1.ManagedSQLiteOpenHelper的前世今生
SQLite是Android內建的一個小型、關係型、屬於文字型的資料庫。
Android中,通過SQLiteOpenHelper類來實現對SQLite資料庫的操作(建立、增、修、刪)。
過建立子類繼承
SQLiteOpenHelper類,實現
它的一些方法來對資料庫進行操作。
在實際開發中,為了能夠更好的管理和維護資料庫,我們會封裝一個繼承自SQLiteOpenHelper類的資料庫操作類,然後以這個類為基礎,再封裝我們的業務邏輯方法。
抽象類ManagedSQLiteOpenHelper類繼承自SQLiteOpenHelper類
// ManagedSQLiteOpenHelper原始碼
abstract class ManagedSQLiteOpenHelper(
ctx: Context,
name: String?,
factory: SQLiteDatabase.CursorFactory? = null,
version: Int = 1
): SQLiteOpenHelper(ctx, name, factory, version) {
private val counter = AtomicInteger()
private var db: SQLiteDatabase? = null
fun <T> use(f: SQLiteDatabase.() -> T): T {
try {
return openDatabase().f()
} finally {
closeDatabase()
}
}
@Synchronized
private fun openDatabase(): SQLiteDatabase {
if (counter.incrementAndGet() == 1) {
db = writableDatabase
}
return db!!
}
@Synchronized
private fun closeDatabase() {
if (counter.decrementAndGet() == 0) {
db?.close()
}
}
}
當我們使用一個一般的SQLiteOpenHelper,我們需要去呼叫getReadableDatabase()或者getWritableDatabase(),然後我們可以執行我們的搜尋並拿到結果。在這之後,我們不能忘記呼叫close()。使用ManagedSqliteOpenHelper我們只需要:
forecastDbHelper.use {
//forecastDbHelper類為繼承ManagedSQLiteOpenHelper類的類
...
}
2.使用
相關文章
- 手把手教你用Java實現AOPJava
- 手把手教你用 Go 實現一個 mTLSGoTLS
- 手把手教你用 1 行命令實現人臉識別
- ASO最佳化 | 手把手教你用資料分析工具
- 手把手教你用RecyclerView實現貓眼電影選擇效果View
- 手把手教你用 Nuget 管理自己的專案庫
- 手把手教你用React實現一個簡單的個人部落格React
- 手把手教你用 JavaScript 實現一個簡單的國際象棋 AIJavaScriptAI
- 手把手:教你用Scrapy建立你自己的資料集(附視訊)
- 資料庫工具類實現資料庫
- 手把手教你用Python實踐深度學習Python深度學習
- 手把手教你用java實現二分查詢樹及其相關操作Java
- 手把手教你用Charles抓包
- Redis多機資料庫實現Redis資料庫
- 資料庫連線池實現資料庫
- 手把手教你用redis實現一個簡單的mq訊息佇列(java)RedisMQ佇列Java
- 【“探探”為例】手把手教你用最少的程式碼實現各種“機器人”機器人
- 手把手教你用Python進行迴歸(附程式碼、學習資料)Python
- 手把手教你用Python庫Keras做預測(附程式碼)PythonKeras
- CAS配置資料庫,實現資料庫使用者認證資料庫
- 資料泵實現資料遷移到異地庫
- Web資料視覺化-手把手教你實現熱力圖Web視覺化
- 手把手教你用vue搭建個人站Vue
- 資料庫實現原理#4(Hash Join)資料庫
- Mybatis實現分包定義資料庫MyBatis資料庫
- 讓業務實現迴歸資料庫資料庫
- Redis 設計與實現:資料庫Redis資料庫
- django使用多個資料庫實現Django資料庫
- golang實現mysql資料庫備份GolangMySql資料庫
- JDBC資料庫連線池實現JDBC資料庫
- 資料庫的最簡單實現資料庫
- 實現MySQL資料庫的實時備份MySql資料庫
- MongoDB資料庫手把手教你來學習MongoDB資料庫
- 《redis設計與實現》2-資料庫實現篇Redis資料庫
- 教你用Magent實現Memcached叢集
- 教你用Perl實現Smgp協議協議
- 4.5萬字手把手教你實現MySQL TB級資料儲存!!MySql
- 手把手 | 用StackOverflow訪問資料實現主成分分析(PCA)PCA