【发布时间】:2021-10-12 03:32:25
【问题描述】:
我有两个数据库文件,每个文件都有一个共同的单表结构。当第二个数据库中的列设置了标志时,我想用第二个数据库中的类似行替换第一个数据库中的整个表行。我知道如何将一个数据库附加到另一个数据库,但我无法找出正确的 UPDATE SET 指令。我正在寻找字符串指令以传递基于 kotlin 的 android studio android.database.sqlite execSQL 调用。
例如:
每个数据库中的表有五列名为 - name,address,date,value,flag
我打开主数据库 (main.db) 并调用 ATTACH DATABASE 将辅助数据库 (secondary.db) 附加为“db2”
然后,我想在主数据库中找到与辅助数据库中名称和地址字段匹配且辅助数据库中的标志字段包含值 1 的行匹配的行。
然后我想用辅助数据库中的行替换主数据库行
我为 execSQL 尝试了以下字符串命令的变体,但未成功:
val TABLE_NAME = "users"
val COL_NAME = "name"
val COL_ADR = "address"
val COL_DATE = "date"
val COL_VAL = "value"
val COL_FLG = "flag"
val db = this.writableDatabase
val attachDb = ("ATTACH DATABASE '$secondaryDbFile' AS 'db2'")
db.execSQL(attachDb)
val updateRows = ("UPDATE $TABLE_NAME SET ($COL_NAME, $COL_ADR, $COL_DATE, $COL_VAL, $COL_FLG) FROM db2.$TABLE_NAME WHERE $COL_FLG = 1")
db.execSQL(updateRows)
我对 SQLite 的掌握不够好,无法构建正确的指令,请帮助。
【问题讨论】:
标签: android sqlite kotlin android-sqlite