執行 db.execSQL() 建表或插入時拋出 SQLException: near "pages": syntax error。截圖顯示建表 SQL 片段:
CREATE TABLE book (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, author TEXT, pages INTEGER price REAL)
第 4 欄位 `pages INTEGER` 後缺少逗號,導致 SQL 解析器將 `price REAL` 視為 `pages` 的約束條件而非下一欄位定義。
CREATE TABLE book (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
author TEXT,
pages INTEGER, -- 此處必須有逗號
price REAL
)
sqlite3 命令行工具導入 .sql 文件測試。try {
db.execSQL(sql);
} catch (SQLException e) {
Log.e("DB_ERROR", "Failed SQL: " + sql);
throw e;
}
Room 持久化庫,編譯期檢查 SQL 語法,避免此類低級錯誤。SQLiteOpenHelper.onCreate() 中,便於版本管理與升級。_id (配合 CursorAdapter),其他欄位小寫下劃線。