SQLite在Kotlin和Anko中的实现
Implementation of SQLite in Kotlin and Anko
我已经创建了我的应用程序数据库,如下所示。我现在想插入记录并检索,因为 link 说 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
是 extensions 在 Kotlin 中的用法。它们允许在使用 Context
.
的 class(或其他函数)中访问值 database
下面的get()
方法定义了那个变量的property。它等效于 Java 中的 getDatabase()
方法,其中它将 return AppDbHelper,如图所示。通过这种方式,您可以使用变量语法检索帮助程序。由于 getter 是一个函数,它每次都会创建一个新的助手,而不是一个实际变量在一次赋值时的行为方式。另请注意,由于这是 val
,因此未提供设置方法。
代码等同于
public static AppDbHelper getDatabase(Context context) {
return new AppDbHelper();
}
在Java
我已经创建了我的应用程序数据库,如下所示。我现在想插入记录并检索,因为 link 说 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
是 extensions 在 Kotlin 中的用法。它们允许在使用 Context
.
database
下面的get()
方法定义了那个变量的property。它等效于 Java 中的 getDatabase()
方法,其中它将 return AppDbHelper,如图所示。通过这种方式,您可以使用变量语法检索帮助程序。由于 getter 是一个函数,它每次都会创建一个新的助手,而不是一个实际变量在一次赋值时的行为方式。另请注意,由于这是 val
,因此未提供设置方法。
代码等同于
public static AppDbHelper getDatabase(Context context) {
return new AppDbHelper();
}
在Java