Android Studio应用启动时创建SQLite数据库崩溃问题求助
解决方案
- 不要直接调用
DataBaseHelper的onCreate()方法,这个方法是SQLiteOpenHelper的系统回调方法,手动调用会因缺少必要的数据库连接初始化逻辑导致崩溃,它仅会在数据库首次创建时由系统自动触发。 - 正确触发数据库创建的方式是调用
getWritableDatabase()或getReadableDatabase()方法,这两个方法会自动完成数据库的检查与创建流程,包括触发onCreate()回调。
修改后的代码示例:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DataBaseHelper dbh = new DataBaseHelper(MainActivity.this); // 调用此方法触发数据库创建与打开 SQLiteDatabase db = dbh.getWritableDatabase(); // 若无需写入操作,也可使用getReadableDatabase() // SQLiteDatabase db = dbh.getReadableDatabase(); }
- 额外说明:调用
getWritableDatabase()时,系统会自动检测目标数据库是否存在:不存在则执行onCreate()创建数据库;已存在则直接打开,不会重复执行创建逻辑,完全符合应用启动时初始化数据库的需求。
内容的提问来源于stack exchange,提问作者Vishnu Prakash
相关产品推荐
相关产品推荐

