【问题标题】:What is a good practice to using a DBHelper (SQLite) on Android Applications在 Android 应用程序上使用 DBHelper (SQLite) 的好习惯是什么
【发布时间】:2010-11-19 12:29:52
【问题描述】:

我有一个扩展 SQLiteOpenHelper 的 DatabaseHelper 类,使用 DBHelper 执行数据提取的好习惯是什么?

在我的 DatabaseHelper 类中,我有一个方法可以帮助我检索诸如“Select * FROM .....”之类的查询结果。结果将被许多其他类使用。

例子:

Cursor getAllWhitelist(){
     SQLite Database db=this.getWritableDatabase();
     Cursor cur = db.rawQuery("Select * from WhiteList");
     return cur;
}

我应该在这个阶段返回一个游标吗?推荐吗?还是我应该返回一个 ArrayList 或类似的东西?

你们做得怎么样?

【问题讨论】:

    标签: java android database sqlite


    【解决方案1】:

    我使用的是,将值存储在某个对象或对象的某个数组列表中并返回该值
    参考这个link

    感谢@Austyn Mahoney,正如他所说,如果我们使用startManagingCursor,我们可以返回光标。此方法允许 Activity 根据 Activity 的生命周期为您管理给定 Cursor 的生命周期。

    【讨论】:

    • 返回一个游标就好了,你只需要确保在你的活动中添加一个startManagingCursor(cursor) 调用,一旦游标被传回给它。如果您想在SimpleCursorAdapter 中使用它,您将需要一个未关闭的游标。
    • 感谢@Austyn Mahoney 提供这些信息。我已经编辑了我的答案。
    【解决方案2】:

    最好的做法是创建一个结果列表并关闭游标和数据库以最小化连接时间。否则,由于某些限制,您可能会关闭连接。这对您的结果列表不利。

    【讨论】:

    • 如果您需要 ListView 适配器的光标,是否会有例外? Google 的示例演示了为此使用光标。
    • 问题是游标不需要连接到数据库。游标是从任何内容提供者获取一些数据的通用接口。
    • @Thomas 你愿意分享那个例子的 sn-p 吗?
    • 这方面的一个例子可以在 Google 的一个教程中看到 developer.android.com/resources/tutorials/notepad/… 参见 fillData() 函数。他们返回项目的光标,对其进行管理,然后将其提供给 SimpleCursorAdaptor。
    • @Vladimir 您假设结果列表很小,如果不是这种情况,那么您将浪费资源将整个列表读入内存。
    猜你喜欢
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2011-07-02
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多