使用Anko添加/查询/解析SQLite
问题描述:
tl; dr:我有问题试图让我的代码工作,现在我可以使用Anko创建数据库并插入列,但当我尝试插入数据时当我打开我的sqliteman列空的数据库中,我也不知道如何检索字符串的数据/ INT要发送到View
使用Anko添加/查询/解析SQLite
这显然是正常工作我可以看到我的数据库,所有已创建具有正确名称的列
class MySqlHelper(ctx: Context) : ManagedSQLiteOpenHelper(ctx, "db_main") {
companion object {
private var instance: MySqlHelper? = null
@Synchronized
fun getInstance(ctx: Context): MySqlHelper {
if (instance == null) {
instance = MySqlHelper(ctx.applicationContext)
}
return instance!!
}
}
override fun onCreate(db: SQLiteDatabase) {
db.createTable("db_main", true,
"_id" to INTEGER + PRIMARY_KEY + AUTOINCREMENT + NOT_NULL,
"name" to TEXT,
"day" to INTEGER)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
}
// Access property for Context
val Context.database: MySqlHelper
get() = getInstance(applicationContext)
}
这应该工作,但是我虽然在数据库中的所有列它不,我不明白他们没有被添加
任何错误消息下面的代码被称为MainActivity
val db = MySqlHelper(this)
fun addtosqllite(title: String, datepicker: DatePicker) {
db.use {
insert("db_main",
"_id" to 1,
"name" to title,
"day" to datepicker.dayOfMonth)
}
}
我不知道该怎么做 我需要从数据库中检索数据。我一直在阅读文档,但我不知道如何实现this
比方说,我有三列_id
,name
和day
我在做这样的事情
db.select("main_db","_id","name","day").exec {
parseSingle //something goes here to send the data to String/Int
}
答
我希望这不是太晚了。你可以试试这个:
database.use {
select("main_db", "_id", "name","day").exec {
parseList(object : MapRowParser<Map<String, Any?>> {
override fun parseRow(columns: Map<String, Any?>): Map<String, Any?> {
Log.e("Your result", columns.toString())
return columns
}
}
)
}
如果希望所有colums,简单地说:'选择( “main_db”)EXEC {',你想指定行:'选择( “main_db”, “姓名”)EXEC {'例如。 – Halima