現象:Failed to open database,數據庫文件命名為 lili.db。
SQLiteOpenHelper 會自動補全後綴,傳入名稱只需 "lili",框架內部會在 /data/data/pkg/databases/lili 創建文件(無後綴)。若你傳 "lili.db",實際文件變成 lili.db(無額外後綴),但某些設備/系統版本會因路徑解析差異導致打開失敗。
public class MyDbHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "lili"; // 無 .db
private static final int VERSION = 1;
public MyDbHelper(Context context) {
super(context, DB_NAME, null, VERSION);
}
// onCreate/onUpgrade...
}
context.getDatabasePath("lili") 獲取標準路徑,不要自行拼接。SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE | SQLiteDatabase.NO_LOCALIZED_COLLATORS) 並自行管理鎖。記住:傳給 SQLiteOpenHelper 的名字就是文件名(無後綴),框架幫你放對地方,別自己加 .db/.sqlite 後綴。