我为什么要同时使用MyDB和MyDBhelper(Android,SQLite)?

时间:2013-10-31 00:47:27

标签: java android sqlite

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

您的UI希望将数据视为Java构造(如集合,字符串等)。 MyDBhelper完成所有实际的IO,将数据从DB读入Cursors。 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数据库 将数据读入光标。它将Cursor返回给MyDB。