mORMot 1.18 第19章 安全性 第19章 安全性 在企业数据库设计中,安全性是必不可少的。mORMot已为此做好准备。 19.1 HTTP/HTTPS 您可以在四个受支持的模式中的任何一个中进行选择,它们可以组合使用。 Pascal类 描述 TSQLRestServerAuthentica ...
mORMot 1.18 第十八章 使用REST/JSON的客户端/服务器 JSON是一种被多种语言和众多领先公司接受的标准。正如我们在JSON章节中所解释的,它是标准化的,紧凑且解析速度快,同时当加入非关键性空格时,也易于人类阅读。这些事实使其成为数据交换最受欢迎的格式之一。 JSON支持六种数据类 ...
mORMot 1.18 第13章 动态数组 众所周知,数组是非常有用的。但在现实生活中,情况是不可预测的,数组的元素数量或大小可能会随着时间的推移而增长。有些语言,如PHP,就使得动态数组的使用变得很简单。在使用mORMot的Delphi中,我们使用类和方法来提供这一功能。 首先,让我们声明一个典型 ...
mORMot 1.18 第12章 Blobs(大二进制对象) 有些情况下,mORMot会以BLOBs(大二进制对象)的形式保存和检索数据。 TSQLRawBlob属性用于存储像图片和文件这样的二进制数据。 以TDynArray.SaveTo二进制格式存储的动态数组。 明确注册为BLOBs的记录。 当 ...
mORMot 1.18 第11章 JSON - JavaScript对象表示法 JSON是一种用于指定数据结构和数组的行业标准格式。(它是ECMA 404的一个子集。)虽然它最初是在JavaScript语言中定义的,但由于以下原因,它已成为一种流行的互联网格式,用于指定和交换数据: 它很紧凑,使用的 ...
mORMot 1.18 第10章 连接表 如果数据库包含连接表,那么数据库将变得更加有用。 假设读者已经知道何时以及为何需要单独的表,以及为何要将它们连接起来——许多关于数据库设计的书籍都详细介绍了这一点。我们不会在这里重复这些信息,甚至不会重复其中的任何子集。我们要介绍的是如何做到这一点。 当你定 ...
mORMot 1.18 第9章 AutoFree 如果你忘记释放一个 TSQLQuery对象会发生什么?会丢失一小部分内存。 如果这种情况在服务器上反复发生,你最终会耗尽内存,导致服务停止。 有一个极好的选项可以保证你通过创建一个 AutoFree变量来自动释放内存。在Delphi中(不是在Free ...
mORMot 1.18 第8章 Delphi中的服务器端JavaScript 在mORMot框架中,对JavaScript脚本的支持被称为Monkey On Rails(版权归Pavel Mashlyakovsky所有,邮箱:pavel.mash@gmail.com),它借助了Mozilla基金会的 ...
mORMot 1.18 第六章 概念 mORMot 应用程序通过 Object Pascal 类型定义数据库结构。该库大量使用运行时类型信息 (RTTI),之所以可能实现,是因为 Delphi 将类型信息存储在可执行文件中。 RTTI 可以说明一个变量是整数、双精度数、字符串、数组、特定类型的类等, ...
mORMot 1.18 第七章 简单的读写操作 本章描述了典型的数据读写操作。首先,我们将注意力集中在数据上,而不是函数。 读取操作返回一个TID,它是一个32位或64位整数(取决于你的内存模型),反映了表的信息。TID在表中的每一行都是唯一的。 ORM的新手可能会感到惊讶,但通常你不需要创建SQL ...
mORMot2 获取数据集 其实在前面想学习mORMot1部分已经收集了很多关于CRUD的示例了,但感觉总是不通透,不能很好使用,一则mORMot函数命令规则比较不同寻常,另外确实示例太少,其实代码注释倒是讲了很多。 procedure FillPrepare(Table: TOrmTable; a ...
mormot2 生成和解析json 本文非完全原创,本文部分内容来自博客园,作者:{咏南中间件} 前综合示例,整个示例是建立在mORMot特有的实现模式的基础上,非常用的序列化反序列化,但又有别于字符串拼接,据说效率极高。 unit Unit1; interface uses Windows, Me ...
mORMot2 的 Logger日志 Logger 很多框架都有,简单的实现就是一个队列加一根线,有复杂的,QDAC里面涉及的就很巧妙,本来QDAC就是个线程框架,所以也有先天优势。 在mORMot 里面自然也有日志实现,它设计的比较麻烦。 mORMot 的Logger 初始化 begin TSyn ...
看了博友的C# 实现刘谦春晚魔术很好,改成了delphi版的。 1 program Project1; 2 3 {$APPTYPE CONSOLE} 4 {$R *.res} 5 6 uses 7 System.SysUtils, 8 System.Classes; 9 10 var 11 list ...
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, V ...
涉及的重要类 REST.Json,REST.JsonReflect,REST.Json.Interceptors, REST.Json.Types单元中。 一、TJson类 最简单的一个类,提供了JSON -> OBJECT和OBJECT -> JSON几个方法,方法有TJsonOptions参数, ...
今天升级到 Delphi 12 后,编译运行原来的项目,出现“[FireDAC][Phys][SQLite][sqlite3]-303.Capability is not supported”的错误。 经过查找文档,发现是FireDAC SQLite 版本更新导致的。 RAD Studio 12.0 ...
mormot2框架中有个THttpServer类,它有一个Router属性,定义如下: property Router: TUriRouter read fRoute; Router是添加路由的入口点,它有和http协议对应的get, post, put, delete等方法,这些方法可以添加路由, ...
在有些破解程序时,不能暴力修改程序,修改后,程序就不能正常运行,因为很多程序启动时有自我的校验,但是当程序加载到内存后,在内存中修改相应的地方就可以达到破解的效果。那么怎样在不破坏程序的前提下,达到修改程序呢? 当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分 ...
var Edit: TComponent;begin Edit := FindComponent("Edit1"); If Edit is TEdit then TEdit(Edit).Text := '你好 Delphi7';end; RTTI(RunTime Type Information): ...