gpt4 book ai didi

android - 使用 Anko 添加/查询/解析 SQLite

转载 作者:IT王子 更新时间:2023-10-29 06:30:00 24 4
gpt4 key购买 nike

tl;dr: 我在尝试让我的代码工作时遇到问题,现在我可以使用 Anko 创建数据库并插入列,但是当我尝试插入数据时,当我在 sqliteman 上打开数据库 我的列是空的 我也不知道如何检索 strings/Int 中的数据以发送到 View

这显然工作正常我可以看到我的数据库创建了所有具有正确名称的列

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

关于android - 使用 Anko 添加/查询/解析 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46079162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com