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

SQLite建表AUTOINCREMENT语法错误导致插入数据时应用崩溃

问题描述

Android应用开发过程中出现数据库操作崩溃:用于输入待存储数据的EditText控件位于第二个Activity,点击添加按钮跳转至该Activity后,执行数据添加操作时应用崩溃,系统抛出错误:

AUTOINCREMENT is only allowed on an INTEGER PRIMARY KEY in CREATE TABLE OPERATION_TABLE

问题原因

崩溃的直接原因是建表SQL语句存在拼写错误:定义主键ID字段时,将SQLite要求的INTEGER类型错拼为INTGER(缺失字母E),SQLite无法识别该字段为合法的INTEGER类型主键,因此抛出AUTOINCREMENT关键字仅允许作用于INTEGER主键的错误。

修复方案
  1. 修正SQLiteHelper类中onCreate方法的建表语句拼写错误,同时修正布尔字段的类型定义(SQLite无原生BOOL类型,布尔值实际以INTEGER类型的0/1存储),修正后的代码如下:
public void onCreate(SQLiteDatabase db) {
        String createTableStatement = "CREATE TABLE " + OPERATION_TABLE + " ("
                + " ID INTEGER PRIMARY KEY AUTOINCREMENT, " 
                + COLUMN_OPERATION_NAME + " TEXT, " 
                + COLUMN_OPERATION_AMOUNT + " TEXT, " 
                + COLUMN_OPERATION_DESCRIPTION + " TEXT, " 
                + COLUMN_OPERATION_IS_INCOME + " INTEGER, " 
                + COLUMN_DATE + " TEXT )";

        db.execSQL(createTableStatement);
    }
  1. 让新的表结构生效,二选一即可:
  • 调试阶段直接卸载设备上已安装的旧版本应用,重新运行安装即可
  • 迭代正式版本时,升级数据库的版本号,在onUpgrade方法中删除旧表后重新调用onCreate创建新表,避免覆盖安装时旧表结构残留。

注:提供的按钮点击监听代码、addOne数据插入方法逻辑不存在触发本次崩溃的问题,无需额外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:39:40