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/

  • Causado por: android.database.sqlite.SQLiteException: cerca de "org": error de syntax (código 1):, al comstackr:
  • Escriba desajuste. Mapa obligatorio <String, Any> Found Map <String, Any?>
  • Error de la database de la sala Android: parámetro no utilizado: días en la function @Query
  • Seleccionar datos de dos tablas en Kotlin Anko
  • Cómo pasar el nombre de db en time de ejecución en kotlin