我創建了我的應用程序數據庫,如下所示。現在我要插入記錄和檢索作爲此鏈接說https://antonioleiva.com/databases-anko-kotlin/使用database.use
SQLite在Kotlin和Anko中的實現
import android.database.sqlite.SQLiteDatabase
import org.jetbrains.anko.db.*
class AppDbHelpler : ManagedSQLiteOpenHelper(AppApplication.instance(), AppDbHelpler.DB_NAME, null, AppDbHelpler.DB_VERSION) {
companion object {
val DB_NAME = "person.db"
val DB_VERSION = 1
val instance by lazy { AppDbHelpler() }
}
override fun onCreate(db: SQLiteDatabase?) {
db!!.createTable(PersonTable.Name, true,
Pair(PersonTable.ID, INTEGER + PRIMARY_KEY + AUTOINCREMENT),
Pair(PersonTable.PersonName, TEXT),
Pair(PersonTable.Domain, TEXT),
Pair(PersonTable.MobileNumber, REAL))
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
db!!.dropTable(PersonTable.Name, true)
onCreate(db)
}
}
// Access property for Context
val Context.database: AppDbHelpler
get() = AppDbHelpler()
MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
insertPerson()
}
fun insertPerson() {
database.use {
}
}
誰能暗示我什麼是線val Context.database: AppDbHelpler get() = AppDbHelpler()
。它能做什麼 ?
'Extensions'-它允許你做變量從任何地方訪問,點式前要看。如果它是'Context',那麼它允許你在有'Context'的地方調用這個方法。如果我指定'X',那麼它將允許我在有'X'可用的地方調用它。這是如何工作的? –
在這種特殊情況下,如果你在一個Activity(擴展上下文)中,你可以直接寫'database'來使用它。如果您在視圖中,則無法直接使用它。但是你可以調用'context.database'。請注意,Views中的'context'直接引用'getContext()'。如果您熟悉Kotlin中的'with'或'apply'方法,則可以使用'context.apply {database}'來獲取它。擴展允許您使用方法/變量,就像它是原始類的一部分一樣。但最終它被靜態調用,所以你不會創建一個自定義類。 –