【问题标题】:Saving random rows from a sqlite database to another temporary sqlite database将随机行从 sqlite 数据库保存到另一个临时 sqlite 数据库
【发布时间】:2018-04-07 17:09:30
【问题描述】:

我从我的 sqlite 数据库中随机选择 20 行,如下所示:

String selectQuery = "SELECT * FROM " + TABLE_QUESTION + " WHERE " + KEY_ID+ " IN (SELECT "+ KEY_ID + " FROM " +TABLE_QUESTION+" ORDER BY RANDOM() LIMIT 20)";

我在活动 A 中显示它们。一段时间后,我从活动 A 转到活动 B,最后是活动 C。

Activity A 中显示的相同随机行在 Activity C 中也应该以相同的顺序显示。

为此,我是否必须将随机行保存到另一个临时 sqlite 数据库中,该数据库在 Activity C 之后总是被清除,如果是,如何?

任何帮助将不胜感激。

【问题讨论】:

  • 理论上,您只需要 20 个 ID。
  • 我有一个测验应用程序。在活动A中,我在模型类的帮助下从questions.db中随机抽取了20个问题,并一一展示。因此,我正在考虑将每个问题信息有序地保存到另一个临时数据库中,该数据库在 Activity C 中使用后每次都会重置。@CL。

标签: sqlite android-sqlite random-data


【解决方案1】:

您可以像这样从临时表中多次查询相同的随机集:

create temporary table tmp AS select id from tableQ ORDER BY random() LIMIT 20;
Select id from tmp;
Select id from tmp;
drop table tmp

【讨论】:

  • 我在 Activity A 停止后关闭数据库连接。我在 Activity C 中创建了一个数据库类的新实例。这个临时表在所有这些之后还会存在吗?
  • 不,临时表将消失。在这种情况下,您最好创建一个真实的表,并在创建它之前将其删除。
  • 谢谢,我会试试,让你知道。 @itsLex
  • 我现在通过我添加的插入方法将随机问题一一保存到另一个类似的数据库中,因为它们显示在活动 A 中。我添加了一个 drop and recreate 方法,它可以帮助我在每次创建 Activity A 时重置其中的所有数据。所以我的问题解决了。 @itsLex
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
相关资源
最近更新 更多