現象:db.insert("add", null, cv) 報錯 no such table: add,但建表語句明確寫了 CREATE TABLE [add] ...。
SQLite 允許使用方括號 []、雙引號 ""、反引號 `` 包裹標識符。若建表時寫 [add],則表名實際為 [add](包含括號),而非 add。同理,列名 [time]、[sporttype] 等也帶有括號。
// 錯誤:常量未包含括號
public static final String TABLE_NAME = "add";
public static final String TIME = "time";
// 正確:常量與建表語句完全一致
public static final String TABLE_NAME = "[add]";
public static final String TIME = "[time]";
public static final String SPORT_TYPE = "[sporttype]";
// ... 其他列名同理
add、time、date 等均為 SQL 關鍵字,建議改為 t_add、t_time、t_date,則無需括號。onCreate 中打印 db.execSQL("SELECT name FROM sqlite_master WHERE type='table'") 確認實際表名。修正常量後,db.insert(TABLE_NAME, null, cv) 即可正常工作。