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

Android Studio中SQLite插入数据时提示“No such column”错误求助

Android SQLite插入报错:tableMon has no column named notes

问题根源

从错误日志INSERT INTO tableMon (notes) VALUES ( notes=hello )能明确看到两个核心问题:

  • 你传入的values变量内容是notes=hello,这完全不符合SQL插入语法——VALUES子句里应该直接放值,而非列名=值的格式,这会让SQLite解析出错,误以为你要插入的是非法表达式。
  • 另一种可能是旧表未更新:如果之前已经创建过tableMon表,修改CREATE TABLE语句后,旧表不会自动重建,新的列不会生效。

解决步骤

1. 修正INSERT语句的语法

强烈推荐用安全规范的方式插入数据,避免字符串拼接的语法错误和SQL注入风险:

  • 方法一:使用ContentValues(官方推荐)
    ContentValues contentValues = new ContentValues();
    contentValues.put("notes", "hello"); // 替换为你的实际变量值
    db.insert("tableMon", null, contentValues);
    
  • 方法二:参数化execSQL查询
    String insertSql = "INSERT INTO tableMon (notes) VALUES (?)";
    db.execSQL(insertSql, new String[]{"hello"}); // 数组元素对应占位符?的位置
    
    若坚持用字符串拼接,需确保值被单引号包裹(注意特殊字符转义):
    String targetValue = "hello";
    String insertSql = "INSERT INTO tableMon (notes) VALUES ('" + targetValue + "')";
    db.execSQL(insertSql);
    

2. 确保表结构生效

如果之前运行过旧版本代码,需清除应用数据或卸载重装,让新的建表语句生效。也可以给建表语句加上IF NOT EXISTS,避免重复创建报错:

String createTableSql = "CREATE TABLE IF NOT EXISTS tableMon (notes TEXT)";
db.execSQL(createTableSql);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:02:56