1

我已经创建了我的应用程序数据库,如下所示。我想现在插入记录并检索,因为这个链接说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()。它能做什么 ?

4

1 回答 1

4

val Context.database是Kotlin中扩展的一种用法。它们允许database每当您在一个类(或另一个函数)中使用Context.

下面的get()方法定义了该变量的属性。它相当于getDatabase()Java 中的一个方法,它将返回 AppDbHelper,如图所示。通过这种方式,您可以使用变量语法检索帮助程序。由于 getter 是一个函数,它每次都会创建一个新的帮助器,而不是一个实际变量在一次赋值时的行为方式。另请注意,由于这是 a val,因此未提供 set 方法。

代码相当于

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

在爪哇

于 2017-06-12T05:52:26.163 回答