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

Android Studio中SQLite插入示例数据报错:SQL语句书写有误?

问题分析与解决方案

嘿,这个问题太常见了——你遇到的确实是SQL语句书写规则的问题,核心错误就是字符串值没加单引号!

错误原因

在SQL语法里,字符串类型的字段值必须用单引号(')包裹起来。你写的VALUES (ikan,nyao)里,ikan和nyao没有加单引号,SQL解析器会把它们当成列名或者数据库对象名,而不是你要插入的文本内容,这就导致数据库找不到对应的列,直接抛出错误。

修正后的代码

只需要给插入的字符串值加上单引号即可:

@Override 
public void onCreate(SQLiteDatabase db) { 
    String createTable = "CREATE TABLE "+TABLE+" (id INTEGER PRIMARY KEY AUTOINCREMENT, indo TEXT, tdr TEXT)"; 
    db.execSQL(createTable); 
    // 给字符串值添加单引号,让SQL解析器识别为文本
    db.execSQL("INSERT INTO "+TABLE+" (indo,tdr) VALUES ('ikan','nyao')"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS " + TABLE); 
    onCreate(db); 
}

更推荐的写法(避免手动拼接SQL的坑)

手动拼接SQL很容易犯引号、拼写错误,还存在SQL注入风险,Android官方更推荐用ContentValues来插入数据,代码更安全也更易维护:

@Override 
public void onCreate(SQLiteDatabase db) { 
    String createTable = "CREATE TABLE "+TABLE+" (id INTEGER PRIMARY KEY AUTOINCREMENT, indo TEXT, tdr TEXT)"; 
    db.execSQL(createTable); 

    // 使用ContentValues封装数据,自动处理字符串格式
    ContentValues values = new ContentValues();
    values.put("indo", "ikan");
    values.put("tdr", "nyao");
    // insert方法会自动生成正确的SQL语句
    db.insert(TABLE, null, values);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:54:04