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