如何在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
相关产品推荐
相关产品推荐

