14

我正在搜索有关 Android 上的 SQLite 的信息,并阅读了一些有关 Android 编程的书籍的一些章节,但我不知道如何真正在 Android 上正确使用 SQLite。

我正在开发一个具有活动、服务和广播接收器的应用程序,它们都必须在数据库中读取和写入数据。所以我有一些问题:

  • 创建SQLiteOpenHelper实例的最佳位置在哪里?我读到了这个,似乎最好的方法是只SQLiteOpenHelper为所有应用程序。
  • 我需要在何时何地SQLiteDatabase通过调用dbHelper.getReadableDatabase()(或getWritableDatabase)来获取对象?我需要在每个查询上执行它,在每个查询后关闭它?
  • 我读到我不应该在主线程中执行数据库操作,所以我为我在 Activity 中执行的每个数据库操作创建了一个异步任务,这是最好的方法吗?
4

2 回答 2

7

大多数问题都是相当主观的。但让我试一试

创建 SQLiteOpenHelper 实例的最佳位置在哪里?我读到了这个,似乎最好的方法是对所有应用程序只使用 SQLiteOpenHelper。

您可以在项目中创建一个扩展SQLiteOpenHelper. 当您要在应用程序中访问多个相同的数据库时,这很有帮助。Activities

我需要在何时何地通过调用 dbHelper.getReadableDatabase()(或 getWritableDatabase)来获取 SQLiteDatabase 对象?我需要在每个查询上执行它,在每个查询后关闭它?

这将在扩展SQLiteOpenHelper的中完成。例如:(这是本文末尾提供的 Vogella 文章的摘录

public void open() throws SQLException {
    database = dbHelper.getWritableDatabase();
}

在将使用该类的活动中:

CommentsDataSource datasource = new CommentsDataSource(this);
datasource.open();

当您使用. _ Cursor_Database ActivityDatabase

当您阅读稍后链接的网页时,上面的代码将有意义。

我读到我不应该在主线程中执行数据库操作,所以我为我在 Activity 中执行的每个数据库操作创建了一个异步任务,这是最好的方法吗?

理想情况下,是的。我个人建议使用Asynctask,尤其是在处理大型记录集时。

最后,我建议您阅读 Lars Vogella 的本教程:http ://www.vogella.com/articles/AndroidSQLite/article.html 。它将解决您的大部分顾虑和疑问。祝你好运。:-)

于 2013-04-04T11:00:29.160 回答
0

1.创建 SQLiteOpenHelper 实例的最佳位置在哪里?

SQLiteOpenHelper 帮助您连接使用它定义的表。因此您可以在一个 SQLiteOpenHelper 类中定义所有表。

2.何时、何地需要调用dbHelper.getReadableDatabase()(或getWritableDatabase)来获取SQLiteDatabase对象?

每当您想在定义的表中写入数据时,您都需要调用getWritableDatabase并且要从中读取数据,您将需要getReadableDatabase

您可以为此目的创建 CRUD(创建、检索、更新、删除)函数。

3 、千万不要在主线程中做数据库操作!

我不确定这个。

那么这里有一个链接让你开始使用 SQLite- http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

于 2013-04-04T10:53:47.187 回答