You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Anko中为SQLiteDatabase的INTEGER字段设置默认值

解决SQLiteDatabase中设置INTEGER默认值的Anko DB语法问题

我明白你遇到的问题啦——在Anko DB的语法体系里,字段的约束(比如默认值)需要用+运算符和字段类型拼接起来,而不是直接跟在类型后面写INTEGER DEFAULT 0,这就是你代码报错的核心原因。

修正后的完整代码

import android.content.Context
import android.database.sqlite.SQLiteDatabase
import org.jetbrains.anko.db.*
import ui.UIApp

override fun onCreate(db: SQLiteDatabase) {
    db.createTable(
        DBSettingTable.TableNAME,
        true,
        DBSettingTable._ID to INTEGER + PRIMARY_KEY + AUTOINCREMENT,
        DBSettingTable.Status to INTEGER + DEFAULT(0) // 这里是修正的关键
    )
}

关键修正点说明

  • Anko DB提供了DEFAULT()函数来定义字段默认值,需要传入默认值参数(支持数字或字符串形式)
  • 所有字段约束(比如PRIMARY_KEY、AUTOINCREMENT、DEFAULT)都需要通过+运算符和字段基础类型(比如INTEGER)拼接,这是Anko DB构建SQL语句的固定语法规则
  • 如果你需要用字符串形式的默认值,也可以写成DEFAULT("0"),效果和DEFAULT(0)一致,SQLite会自动处理类型转换

内容的提问来源于stack exchange,提问作者HelloCW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:07:22