Android App切换Activity崩溃:SQLite AUTOINCREMENT语法错误
解决SQLite语法错误导致的Activity崩溃问题
嘿,我看你现在遇到的麻烦是:单表创建的问题已经修复,但切换到LehrerErstellen这类Activity时App直接崩溃,不过MainActivity能正常运行对吧?结合你给出的崩溃日志,问题根源很明确——SQLite的语法错误,咱们一步步来搞定它:
核心错误点分析
从崩溃日志里能看到两个关键问题:
AUTOINCREMENT的使用违规:SQLite有严格规定,AUTOINCREMENT只能搭配INTEGER PRIMARY KEY类型的字段使用,不能用在其他类型或者主键定义不规范的字段上。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
相关产品推荐
相关产品推荐

