0

我在网上搜索并查看了一些有关Android代码的书籍,发现了一些相互矛盾的信息。

在 The Android Developer's Cookbook 中,作者描述了三个类:MyDB.java、MyDBhelper.java 和 Constants.java。

  • MyDB.java 用于打开和关闭数据库以及插入和查询数据库(我假设他们也会在此类中放置更新、行删除等)。
  • MyDBhelper.java(扩展 SQLiteHelper)用于 onCreate() 和 onUpdate() 方法。DB 的表是在 onCreate() 中创建的。
  • Constants.java 用于定义 MyDB.java 和 MyDBhelper.java 使用的常量。

在网上,我找到了一些根本不使用 MyDB.java 概念的示例(如果需要,我可以链接它们)。这些示例包括 MyDBhelper.java 类中的所有内容。

一种方式比另一种更好吗?是否有理由将 onCreate 和 onUpdate 方法保留在与数据操作/查询类不同的类中?我知道两者都可以工作,但我正在寻找更广泛接受的方法。

4

1 回答 1

0

我相信一般概念是您希望将 UI 逻辑与数据库逻辑分开,并且 MyDB 类在 DB 的细节和您的 UI 之间进行接口。

您的 UI 希望将数据视为 Java 构造(如集合、字符串等)。MyDBhelper 执行所有实际的 IO,将数据库中的数据读入游标。MyDB 类充当中间人,将 Cursor 数据转换为常规 Java 结构。

一个例子:

在活动中:

ArrayList(Customer> ac = MyDBhelper.getCustomers();

在 MyDB 中:

Cursor c = MyDBhelper.getCustomers();
ArrayList<Customer> customers = new ArrayList<Customer>();
// For each row in the returned Cursor, create a Customer object, and add it to an ArrayList<Customer> collection.
// return the ArrayList to the UI
return customers;

MyDBhelper 创建所需的 SQLite 查询字符串以获取所需的数据,并调用 SQLite 数据库将数据读入游标。它将光标返回给 MyDB。

于 2013-10-31T01:07:57.550 回答