gpt4 book ai didi

android - SQLite 数据库和数据访问逻辑

转载 作者:行者123 更新时间:2023-11-29 00:50:03 26 4
gpt4 key购买 nike

问题:

我必须创建一些表来缓存一定数量的文本数据,这些数据是通过读取 XML 获得的。这些表只需要创建一次——在应用程序的初始运行时。表格中的数据应在固定时间后清除。应该有一个类暴露给其他类,允许在此数据库上进行 CRUD 操作。

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

我有一些问题,请帮忙:

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

谢谢。

最佳答案

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

我不会在这里重写它,而是将您链接到我在这里完成的关于这个 SO 问题的帖子:Android Database Access Design Approach

The data in the database is to be displayed in Lists. I have data in ArrayLists(created when parsing XML) as well as Database(after these lists are persisted). What adapter should I use to back the list up? Should I use ListAdapter or CursorAdapter?

是的,CursorAdapter 在这种情况下可能没问题。在您的 ListActivity 中,您可以执行如下查询

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

如果您正确实现了 ContentProvider,列表的刷新将自动发生。因为在那种情况下你会有这样一行

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

在你的插入/更新/删除方法中,它会通知注册的观察者更新他们的数据。

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com