为什么getWritableDatabase()是创建SQLite数据库所必需的?

时间:2017-12-20 14:39:21

标签: android sqlite android-database

我想创建一个SQLite数据库 所以我遵循了一个教程,我在MainActivity中创建了这两行来创建数据库。

LugaresDB lugaresDB = new LugaresDB(getApplicationContext());
SQLiteDatabase db = lugaresDB.getWritableDatabase();

我的问题:我只期望创建数据库的第一行,但它没有创建它 我必须添加第二行。为什么呢?

2 个答案:

答案 0 :(得分:4)

因为这就是框架的实施方式。

不可能确切地说明为什么这样实现,但通常遵循single responsibilityleast astonishment的原则是一个好的设计理念:构造函数只负责对象实例初始化。任何其他操作(例如实际使用文件I / O打开数据库)都是不良副作用。这些其他操作更好地建模为名称中包含动词的方法。

答案 1 :(得分:0)

因为这是实现类的方式。您的LugaresDB似乎是SQLiteOpenHelper的子类。第一行创建了一个类SQLiteOpenHelper的辅助对象,可用于创建SQLiteDatabase的只读或可写实例,这是第二行所做的。