Реализация SQLite в Котлине и Анко

Я создал базу данных приложений, как показано ниже. Я хочу вставить запись сейчас и получить, поскольку эта ссылка говорит https://antonioleiva.com/databases-anko-kotlin/, чтобы использовать 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 { } } 

Может кто-нибудь val Context.database: AppDbHelpler get() = AppDbHelpler() мне, какая строка для val Context.database: AppDbHelpler get() = AppDbHelpler() . Что оно делает ?

val Context.database – это использование расширений в Котлине. Они позволяют доступ к database значений всякий раз, когда вы находитесь в классе (или другой функции), используя Context .

Метод get() ниже определяет свойство этой переменной. Это эквивалентно getDatabase() в Java, где он вернет AppDbHelper, как показано. Имея его таким образом, вы можете получить помощника, используя синтаксис переменных. Поскольку геттер является функцией, он будет создавать новый помощник каждый раз, а не как действительная переменная будет вести себя только с одним присваиванием. Также обратите внимание, что поскольку это значение val , метод набора не предоставляется.

Код эквивалентен

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

в Java

Это хороший блог с полным примером sqlite в kotlin.

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

Intereting Posts
Ошибка раздувания фрагмента класса android kotlin Почему бы мне не сделать каждый класс класса Котлин классом данных? Почему в котлин можно делегировать только интерфейсы? Как получить класс выполнения переменной в Котлин? Ошибка приложения из-за того, что экземпляр экземпляра lateinit не инициализирован Попытка исключить поле при сохранении класса данных kotlin в качестве документа в Google Cloud Firestore Является ли ключевое слово lateinit ненужным? Невозможно получить узел в центре в StackPane с помощью TornadoFX Десериализация классов с ленивыми свойствами с использованием Gson и Kotlin 1.0 beta 4 Android N Java 8 (компилятор Jack) и Kotlin interop Ошибка Kotlin: Кинжал не поддерживает инъекцию в частные поля Как перебирать иерархию классов? Как указать версию RxJava при использовании RxKotlin? Есть ли такой синтаксис, как #region #endregion в Котлине? Kotlin – Идиоматический способ проверки массива содержит значение