首页 > 解决方案 > 重新排序游标数据

问题描述

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

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

标签: androidsqlitecursor

解决方案


您可以在使用来自表达式的派生值和适当的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");

有关参数的说明,请参阅查询

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

还有其他的,例如构建MatrixCursor

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


推荐阅读