在Kotlin和Anko中实现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是Kotlin中扩展的用法。 它们允许在使用Context )的类(或另一个函数)中访问数值database

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

该代码相当于

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

在Java中

这是一个很好的博客,在kotlin中有完整的sqlite示例。

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