DAO 執行 insert/update/query 時拋出 no such table 或游標為空。
DBHelper extends SQLiteOpenHelper 的 onCreate(SQLiteDatabase db) 是否包含 db.execSQL(CREATE_TABLE_SQL)。private static final int DATABASE_VERSION = 2; 觸發 onUpgrade,或卸載 App 重裝。getWritableDatabase() 是否在主執行緒長時間持有,導致 ANR。// DBHelper.java
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE add (_id INTEGER PRIMARY KEY, time TEXT, sport_type TEXT, ...)");
db.execSQL("CREATE TABLE ActionList (_id INTEGER PRIMARY KEY, type INTEGER, name TEXT, ...)");
}
// DAO 建構子
public AddDAO(Context c) {
db = new DBHelper(c).getWritableDatabase(); // 此處會觸發 onCreate/onUpgrade
}
SQLiteOpenHelper 實例,避免重複開啟連接。DBConstants 或 Schema 類中,便於維護。cursor.close() 或使用 try-with-resources (API 19+)。