使用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

比方说,我有三列_idnameday 我在做这样的事情

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 
     } 
    } 
    ) 
} 
+0

如果希望所有colums,简单地说:'选择( “main_db”)EXEC {',你想指定行:'选择( “main_db”, “姓名”)EXEC {'例如。 – Halima