要在我的应用程序中实现数据库访问,我跟着Lars Vogel tutorial,但我对一些事情感到很困惑......
TodoDbAdapter
类具有以下构造函数和open方法:
public TodoDbAdapter(Context context) {
this.context = context;
}
public TodoDbAdapter open() throws SQLException {
dbHelper = new TodoDatabaseHelper(context);
database = dbHelper.getWritableDatabase();
return this;
}
然后应该像这样初始化这个适配器:
dbAdapter = new TodoDbAdapter(this);
dbAdapter.open();
1) getWriteableDatabase
方法是通过抛出可能的SQLException
来负责的方法。为什么我们需要在我们的开放方法中重新抛出?有这个原因吗?
2)整个构造函数/开放对的重点是什么?为什么不初始化dbHelper
并准备好在构造函数中编写数据库?
3)为什么我们使用return this
在open方法中返回对象的实例?如果要将open方法代码移动到构造函数中,我们就不再需要return this
,它将是隐含的,对吧?我在这里缺少什么?
答案 0 :(得分:2)
1)
getWriteableDatabase
方法是负责人 抛出可能的SQLException
。为什么我们需要重新考虑我们的 打开方法?有这个原因吗?
显式声明运行时异常是一种风格问题,以突出显示open()
可能失败。如果您不想处理它,请删除throws子句。
2)整个构造函数/开放对的重点是什么?为什么不 初始化dbHelper并准备好在数据库中写入数据库 构造
这允许您创建实例(快速操作)而不必强制执行打开数据库的可能较慢的操作(磁盘IO等);大部分时间这都无关紧要,因为你会像在你的代码片段中一样进行。此外,这使构造函数保持无异常,这是一些人喜欢的。
3)为什么我们在open方法中返回对象的实例 还有这个吗?如果将打开的方法代码移动到 构造函数,我们不再需要返回这个,它会 隐含的,对吗?我在这里缺少什么?
如果它被移入构造函数中,那么return this
将是隐含的。由于在Android中使用DB帮助程序类的常用方法是一次性创建和打开它,open()
只需执行一些小构建器模式,因此您可以使用TodoDbAdapter helper = new TodoDbAdapter(this).open();
获取最常见的用例。 / p>
总结一下:你的这三点主要是关于风格,我能想到的功能性原因很少,其他方法也是正确的。