【问题标题】:How to properly fetch the next rows in a database如何正确获取数据库中的下一行
【发布时间】:2021-02-12 16:44:59
【问题描述】:

我已经尝试使用 here 找到的 RecsSkip,但是当我设置 RecsSkip 时,它仍然会抓取第一组行。我尝试过使用 FetchNext,它可以工作一段时间。当我抓住第二组时,它可以工作,然后不会抓住第三组。

第一次抢:

dmMain.Query.SQL.Text := 'SELECT * FROM cards;';
dmMain.Query.Open();

顺序抓取:

dmMain.Query.Disconnect();
dmMain.Query.FetchOptions.RecsSkip := skip * dmMain.Query.FetchOptions.RowsetSize;
dmMain.Query.Open();

and I have tried

//  dmMain.Query.FetchNext();

【问题讨论】:

  • 不确定我是否理解清楚:您想从 SQLite 数据库中获取行但跳过第一行并限制返回的行数?如果这是您要查找的内容,请在 SELECT 语句中使用 LIMIT 和 OFFSET。见sqlite.org/draft/lang_select.html
  • 想抓取第一组行,处理数据。准备好后,抓取下一组并处理。重复直到完成。
  • 谢谢。做了一些工作,但它奏效了。

标签: sqlite firemonkey firedac delphi-10.3-rio


【解决方案1】:

我将我的评论转化为答案:

要从 SQLite 获取行块,请使用 SELECT statement LIMIT 子句和 OFFSET

LIMIT 子句用于为整个 SELECT 语句返回的行数设置一个上限。

可选的OFFSET 子句可以跟在LIMIT 子句之后。 SELECT statement 返回的结果集中省略了前 M 行,并返回接下来的 N 行,其中 M 和 N 分别是 OFFSETLIMIT 子句计算的值。

【讨论】:

  • @krg 请将我的答案标记为“已接受”(答案左侧的勾号),以便其他人知道找到了解决方案。这是 StackOverflow 中的基本规则。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
  • 2020-07-11
  • 1970-01-01
相关资源
最近更新 更多