mORMot2 获取数据集

打印 上一主题 下一主题

主题 894|帖子 894|积分 2684

mORMot2 获取数据集

其实在前面想学习mORMot1部门已经网络了很多关于CRUD的示例了,但感觉总是不通透,不能很好使用,一则mORMot函数命令规则比较差别寻常,另外确实示例太少,其实代码注释倒是讲了很多。
  1. procedure FillPrepare(Table: TOrmTable; aCheckTableName: TOrmCheckTableName = ctnNoCheck); overload;
复制代码
FillPrepare 步伐是为了从 TOrmTable 效果中准备获取值。

  • 在准备之后,你可以调用 FillRow(1..Table.RowCount) 来获取任何一行的值。
  • 或者,你也可以使用以下循环来遍历全部行:
  1. while Rec.FillOne do
  2.   dosomethingwith(Rec);
复制代码

  • 在这个过程中,指定的 TOrmTable 被存储在一个受保护的内部字段 fTable 中。
  • 如果你想获取表中的字段名,可以设置 aCheckTableName 参数。在匹配到当前记录之前,任何待处理的 'TableName.' 前缀都将被去除。
注意:这里的 dosomethingwith(Rec); 是一个占位符,代表你可以对每一行记录 Rec 执行某些操作。实际使用时,你必要将其替换为详细的业务逻辑代码。同时,Rec 应该是一个已经界说好的记录类型变量,用于存储从 TOrmTable 中获取的数据。
另外,TOrmCheckTableName 是一个罗列类型,ctnNoCheck 是它的一个值,表现不进行表名查抄。如果你必要查抄表名,可以通报其他相应的罗列值给 aCheckTableName 参数。
  1. function FillPrepare(const aClient: IRestOrm; const aSqlWhere: RawUtf8 = ''; const FieldsCsv: RawUtf8 = ''; aCheckTableName: TOrmCheckTableName = ctnNoCheck): boolean; overload;
复制代码
FillPrepare 函数用于从 SQL WHERE 语句中获取值。

  • 如果 SQL 哀求成功,则返回 true,如果在 SQL 哀求期间发生错误,则返回 false。
  • 准备完成后,你可以通过调用 FillRow(1..Table.RowCount) 来获取任何一行的值。
  • 或者,你也可以使用以下循环来遍历全部行:
  1. while Rec.FillOne do
  2.   dosomethingwith(Rec);
复制代码

  • 函数会创建一个临时的 TOrmTable,并将其存储在一个受保护的内部字段 fTable 中。
  • 如果 aSqlWhere 留空(''),则会尽快检索全部行(例如,通过绕过外部数据库的 SQLite3 虚拟表模块)。
  • WHERE 子句应使用内联参数(如 'Name='Arnaud'):')以提高服务器速度。请注意,你可以像这样使用 FormatUtf8():
[code]aRec.FillPrepare(Client, FormatUtf8('Salary>? AND Salary
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南七星之家

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表