Ich habe meine Anwendungsdatenbank wie folgt erstellt. Ich möchte jetzt Datensatz einfügen und abrufen, wie Link sagt https://antonioleiva.com/databases-anko-kotlin/database.use
Implementierung von SQLite in Kotlin und 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 verwenden, um
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
insertPerson()
}
fun insertPerson() {
database.use {
}
}
Kann mir jemand andeuten, welche Linie für val Context.database: AppDbHelpler get() = AppDbHelpler()
ist. Was es macht ?
'Extensions'- Ist es Ihnen Variablen von überall zugänglich machen können, hängt vor Punktartauswahleinheit auf. Wenn es "Kontext" ist, dann erlaubt es, diese Methode aufzurufen, wo Sie "Kontext" haben. Wenn ich 'X' spezifiziere, kann ich das hier aufrufen, wo ich' X' zur Verfügung habe. So funktioniert es? –
In diesem speziellen Fall können Sie, wenn Sie sich in einer Aktivität befinden (was den Kontext erweitert), direkt 'database' schreiben, um sie zu verwenden. Wenn Sie sich in einer Ansicht befinden, können Sie sie nicht direkt verwenden. Aber Sie können 'context.database' aufrufen. Beachten Sie, dass sich 'context' in Views direkt auf' getContext() 'bezieht. Wenn Sie mit den Methoden 'with' oder' apply' in Kotlin vertraut sind, können Sie 'context.apply {database}' verwenden, um sie zu erhalten. Erweiterungen ermöglichen es Ihnen, die Methoden/Variablen so zu verwenden, als ob sie Teil der ursprünglichen Klasse wären. Aber am Ende wird es statisch aufgerufen, so dass Sie keine benutzerdefinierte Klasse erstellen. –