我想创建一个SQLite数据库 所以我遵循了一个教程,我在MainActivity中创建了这两行来创建数据库。
LugaresDB lugaresDB = new LugaresDB(getApplicationContext());
SQLiteDatabase db = lugaresDB.getWritableDatabase();
我的问题:我只期望创建数据库的第一行,但它没有创建它 我必须添加第二行。为什么呢?
答案 0 :(得分:4)
因为这就是框架的实施方式。
不可能确切地说明为什么这样实现,但通常遵循single responsibility和least astonishment的原则是一个好的设计理念:构造函数只负责对象实例初始化。任何其他操作(例如实际使用文件I / O打开数据库)都是不良副作用。这些其他操作更好地建模为名称中包含动词的方法。
答案 1 :(得分:0)
因为这是实现类的方式。您的LugaresDB
似乎是SQLiteOpenHelper
的子类。第一行创建了一个类SQLiteOpenHelper
的辅助对象,可用于创建SQLiteDatabase
的只读或可写实例,这是第二行所做的。