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

Android App切换Activity崩溃:SQLite AUTOINCREMENT语法错误

解决SQLite语法错误导致的Activity崩溃问题

嘿,我看你现在遇到的麻烦是:单表创建的问题已经修复,但切换到LehrerErstellen这类Activity时App直接崩溃,不过MainActivity能正常运行对吧?结合你给出的崩溃日志,问题根源很明确——SQLite的语法错误,咱们一步步来搞定它:

核心错误点分析

从崩溃日志里能看到两个关键问题:

  1. AUTOINCREMENT的使用违规:SQLite有严格规定,AUTOINCREMENT只能搭配INTEGER PRIMARY KEY类型的字段使用,不能用在其他类型或者主键定义不规范的字段上。
  2. Lehrer_table创建语句的语法混乱:你写的语句里存在字段名和数据类型混淆的问题,比如ID_LINTEGER PRIMARY KEY AUTOINCREMENT,正确的格式应该是「字段名 数据类型」,这里把字段名写成了ID_LINTEGER(应该是ID,类型是INTEGER);还有VORNAME_TEXT这类写法,应该是VORNAME TEXT,字段名和类型之间必须有空格,不然SQLite根本识别不了。

具体修正步骤

1. 修正Lehrer_table的创建SQL语句

把错误的创建语句替换成符合SQLite规范的版本,示例如下:

CREATE TABLE IF NOT EXISTS Lehrer_table (
    ID INTEGER PRIMARY KEY AUTOINCREMENT,
    VORNAME TEXT,
    NACHNAME TEXT,
    FACH TEXT,
    RAUM TEXT
);

这里要注意:

  • 每个字段都遵循「字段名 数据类型」的格式,空格不能少
  • 主键字段明确声明为INTEGER PRIMARY KEY,之后再加AUTOINCREMENT才符合规则

2. 检查其他表的创建语句

同步检查FachErstellen等其他功能涉及的表创建语句,确保没有类似的字段名与类型混淆、缺少空格的问题,保持语法统一。

3. 清除旧的错误表结构

因为之前已经创建过不符合规范的表,直接修改SQL语句后可能不会生效——SQLite会跳过已存在的表创建操作。所以建议先卸载App或者清除App的存储数据,让SQLite重新创建正确的表结构。

4. 重新测试

把修正后的SQL语句替换到你的DBHelper类中,重新运行App,再尝试切换到LehrerErstellen等Activity,应该就能解决崩溃问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:55:53