首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android SQLite 插入報錯:建表語句缺少逗號導致語法錯誤

     編輯:程式設計綜合問答

錯誤現象

執行 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
)

驗證技巧

  1. 在 SQLite 管理工具 (如 DB Browser for SQLite) 中先執行建表語句,確認語法無誤再寫入代碼。
  2. 使用 sqlite3 命令行工具導入 .sql 文件測試。
  3. 代碼中捕獲異常並打印完整 SQL:
try {
    db.execSQL(sql);
} catch (SQLException e) {
    Log.e("DB_ERROR", "Failed SQL: " + sql);
    throw e;
}

擴展建議

  • 採用 Room 持久化庫,編譯期檢查 SQL 語法,避免此類低級錯誤。
  • 建表語句統一放在 SQLiteOpenHelper.onCreate() 中,便於版本管理與升級。
  • 欄位命名遵循規範:主鍵用 _id (配合 CursorAdapter),其他欄位小寫下劃線。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved