J'ai créé ma base de données d'application comme ci-dessous. Je veux insérer RecordNow et récupérer comme ce lien dit https://antonioleiva.com/databases-anko-kotlin/ à utiliser database.use
Implémentation de SQLite dans Kotlin et 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 {
}
}
Quelqu'un peut-il me allusion quelle ligne est pour val Context.database: AppDbHelpler get() = AppDbHelpler()
. Ce qu'il fait ?
'Extensions'- Est-ce que cela vous permet de rendre les variables accessibles à partir de n'importe où, dépend avant le type de point. Si c'est "Contexte" alors cela permet d'appeler cette méthode où vous avez 'Contexte'. Si je spécifie 'X' alors cela me permettra d'appeler ceci où j'ai' X' disponible. Est-ce ainsi que cela fonctionne? –
Dans ce cas particulier, si vous êtes dans une activité (qui étend le contexte), vous pouvez directement écrire 'database' pour l'utiliser. Si vous êtes dans une vue, vous ne pouvez pas l'utiliser directement. Mais vous pouvez appeler 'context.database'. Notez que 'context' dans Views renvoie directement à' getContext() '. Si vous connaissez les méthodes 'with' ou' apply' dans Kotlin, vous pouvez utiliser 'context.apply {database}' pour l'obtenir. Les extensions vous permettent d'utiliser les méthodes/variables comme si elles faisaient partie de la classe d'origine. Mais à la fin, il est appelé statiquement, donc vous ne créez pas de classe personnalisée. –