【问题标题】:Reorder cursor data重新排序游标数据
【发布时间】:2019-11-13 05:12:46
【问题描述】:

有没有办法从 sqlite 游标加载一些数据,并使用自定义计算更新现有列数据并在 android studio 中按该列重新排序游标行?我不想将新数据提交到数据库。

谁能指出我正确的方向来实现这一目标?谢谢。

【问题讨论】:

    标签: android sqlite cursor


    【解决方案1】:

    您可以在使用表达式的派生值和适当的 ORDER BY 子句提取数据时执行此操作。

    例如假设您在表中有名为 x 和 y 的列,并且它们具有数值,那么您可以添加一个派生列 z 可以从游标访问:-

    SELECT x,y, x * y AS z FROM your_table ORDER BY z
    

    在 android 中,这可能假设 dbSQLiteDatabase 的一个实例。

    Cursor your_cursor = db.query("your_table", new String[]{"x","y","x * y AS z"},null,null,null,null,"z");
    

    有关参数的说明,请参阅query

    您可以使用仅使用“SELECT * FROM your_table (db.query("your_table,null,null,null,null,null,null,null);) 提取的光标以编程方式执行此操作,但您必须构建结果然后对结果提取进行排序(让 SQLite 执行此操作更简单且可能更有效)你)。

    还有其他的,比如建立一个MatrixCursor

    但是,您不能使用标准 API 重新排序或更改游标本身中的数据,因为游标旨在成为数据库查询的结果。它也被缓冲,因此可以访问数据库以检索其他数据。

    【讨论】:

    • 感谢您的回答。我有一些复杂的算法可以在非常有限的时间内按该列解析和排序数据。我尝试使用查询进行计算,但意识到对于功能有限的 sqlite 来说太多了。写入数据库和重新查询对我来说需要很多时间。在 java 中为光标数据和顺序构建 MatrixCursor 对我来说也需要很多内存和处理器时间。还是谢谢。
    猜你喜欢
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多