问题:

我必须创建一些表来缓存通过阅读XML获得的一些文本数据。这些表仅需创建一次-在应用程序的初次运行时。表中的数据应在固定时间段后清除。应该有一个暴露给其他类的类,该类允许对该数据库进行CRUD操作。

谷歌搜索为我找到了一些有关创建数据库和数据访问逻辑的教程的链接。

我有一些问题,请帮助:


我应该只有几个DataBaseHelper(DBAdapter)类?是否可以将所有SQL DDL和DML语句,数据库名称,表名称都作为此类的静态字符串使用?
如何确保仅创建表一次?
在固定的时间间隔后是否可以清除数据库?
设计数据库时,有什么最佳实践可遵循?
数据库中的数据将显示在列表中。我在ArrayLists(解析XML时创建)以及Database(这些列表被保留之后)中都有数据。我应该使用什么适配器来备份列表?我应该使用ListAdapter还是CursorAdapter?


谢谢。

最佳答案

在这种情况下,最简单的方法是坚持使用ContentProviders。它们使您可以将与数据库相关的逻辑(数据库表的设置,数据库升级的管理,CRUD操作)完全与应用程序的其余部分区分开。

与其在这里重写,不如将我链接到我在此问题上所做的帖子:Android Database Access Design Approach


  数据库中的数据将显示在列表中。我在ArrayLists(解析XML时创建)以及Database(这些列表被保留之后)中都有数据。我应该使用什么适配器来备份列表?我应该使用ListAdapter还是CursorAdapter?


是的,在这种情况下,CursorAdapter可能很好。然后,您可以在ListActivity中执行查询,例如

...
CursorAdapter adapter = managedQuery(....);
setListAdapter(adapter);
...


如果正确实现了ContentProvider,将自动刷新列表。因为那样的话

...
getContext().getContentResolver().notifyChange(uri, null);
...


在您的插入/更新/删除方法中,这将通知注册的观察者更新其数据。

关于android - SQLite数据库和数据访问逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3599937/

10-12 00:24
查看更多