Implementación de SQLite en Kotlin y Anko

He creado mi database de aplicaciones como a continuación. Quiero insert el logging ahora y recuperarlo, ya que este enlace dice https://antonioleiva.com/databases-ankokotlin/ para usar database.use

 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 { } } 

¿Alguien puede indicarme qué línea es para val Context.database: AppDbHelpler get() = AppDbHelpler() . Que hace ?

val Context.database es un uso de extensiones en Kotlin. Permiten que se acceda a la database de database valores cuando se encuentre en una class (u otra function) utilizando Context .

El método get() continuación define la propiedad de esa variable. Es equivalente a un método getDatabase() en Java, donde devolverá el AppDbHelper como se muestra. Tenerlo de esta manera le permite recuperar el ayudante usando la syntax de la variable. Como el getter es una function, creará un nuevo helper cada vez, en lugar de cómo se comportará una variable real con una sola asignación. También tenga en count que dado que este es un val , no se proporciona un método de set.

El código es equivalente a

 public static AppDbHelper getDatabase(Context context) { return new AppDbHelper(); } 

en Java

Este es un buen blog con un ejemplo completo de sqlite en kotlin.

http://easybook4u.com/index.php/2017/08/09/how-to-use-sqlite-in-android-kotlin/

  • Cómo pasar el nombre de db en time de ejecución en kotlin
  • ¿Cómo unir dos tablas en Android usando el método de consulta del proveedor de contenido?
  • Escriba desajuste. Mapa obligatorio <String, Any> Found Map <String, Any?>
  • Android (Kotlin): sobrescribe el nombre para la input del logging de llamadas
  • Base de datos de android de Kotlin: no se puede convertir java.lang.String en android.database.Cursor