QF中间件使用说明

 

       QF中间件是在2020年春节期间出现新型冠状病毒感染的肺炎疫情不敢外出,闲来无事编写的。编程是业余爱好,平时编程只会拖控件,中间件可能存在未知Bug,这个版本也只实现了简单的增删改查功能,与已有的中间件功能差距巨大,请高手勿喷!

QF中间件使用FDmemTable、mORMot和参考咏南开源mORMot中间件的基础上开发而成,QFDataSet包含QFRest、QFTable和QFQuery这3个控件)方便使用,QF中间件已测试MSSQL2000、postgresq、MySQL和SQLite等数据库,三层应用环境使用正常,ORACLE数据库没环境测试,MSSQL、SQLite和ORACLE使用mORMot自带数据引擎,其中SQLite直接将引擎编译到服务端程序,MySQL和POSTGESQL使用免费开源控件zeosdbo-7.2.4)。

QF中间件同时解决了盒子论坛提出使用mORMot时遇到的若干问题,利用本中间件可以简单快捷编写三层应用。

:http://bbs.2ccc.com/topic.asp?topicid=559565

一、QF中间件服务端设置

QF中间件服务端采用windows的services方式,安装后以services运行。

将QFMg.exe和QFSvr.exe这2个文件拷贝到服务器指定的文件夹,运行QFMg,exe配置相关参数。

1.配置数据库设置:选择数据库类型、数据库IP、数据库名称、用户和密码

POSTGESQL:需要将libeay32.dll、libiconv-2.dll、libintl-8.dll、libpq.dll、msvcr120.dll和ssleay32.dll放到QFSvr.exe文件夹中。
   MSSQL:不需要单独数据库驱动;
   MYSQL:将libmysql.dll放到QFSvr.exe文件夹中;   
   SQLite:已将引擎嵌入QFSvr.exe
   ORACLE:未测试。

2.设置服务器参数

3.服务设置:安装QF中间件服务,安装成功后启动QF中间件服务。

二、QFDataSet控件的使用说明

1、QFRest控件

1).QFRest.IP:服务器IP

2).QFRest.Port:服务器端口(默认2006)

3).QFRest.User:认证名称

4).QFRest.Passwords:认证密码

5).QFRest.Connect:连接服务器

6).QFRest.DisConnect:断开服务器连接

2、QFTable控件

1).QFTable.Rest:远程连接控件

2).QFTable.IndexFieldNames:更新时的主键字段

3).QFTable.NoField:更新时不更新的字段列表,多个字段时用逗号分割

4).QFTable.TableName:表名称

5).QFTable.ApplyUpdates:当需要保存到远端时用。

6).QFTable.PageSize:每页的记录数,默认为100

7).QFTable.PageNo:当前页

8).QFTable.PageIndexMax:当前表最大页数

9).QFTable.Open:打开表时,根据PageNum和PangeIndex调用指定记录

QFTable1.PageSize := 100;

QFTable1.PageNo := 1;//改变这个值读取指定页的记录

QFTable1.Open;

10).QFTable.Locate(const AKeyFields: String; const AKeyValues: Variant; AOptions: TLocateOption):Boolean;

例子:

QFTable1.Locate('BGBH,ID',VarArrayOf(['HYA2018-25318',17]), loPartialKey);

11).打开前一页例子:

QFTable1.PageSize := PageNum;

QFTable1.PageIndex := pn-1;//改变这个值读取指定页的记录

QFTable1.Open;

12).打开下一页例子:

QFTable1.PageSize := PageNum;

QFTable1.PageNo := pn+1;//改变这个值读取指定页的记录

QFTable1.Open;

3、QFQuery控件

1).QFQuery.Rest:远程连接控件

2).QFQuery.SQL:设置SQL语句

3).QFQuery.Open:执行QFQuery.SQL的Sql语句

4).QFQuery.Open(SQL:string):执行SQL

5).QFQuery.ExecSQL

QFQuery例子:

QFQuery1.SQL := Edit2.Text;

QFQuery1.Open;

DataSource1.DataSet := QFQuery1;

三、Delphi开发环境

Library paths加入mORMot、Components、zeosdbo-7.2.4\src、zeosdbo-7.2.4\src\core、zeosdbo-7.2.4\src\core\dbc、zeosdbo-7.2.4\src\core\parsesql、zeosdbo-7.2.4\src\plain,其中mORMot和zeosdbo-7.2.4的文件夹是精简后所需的全部文件

Demo的界面:

备注:Demo服务端放在5M带宽的天翼云主机。

2020-01-30

QF中间件的更多相关文章

  1. Linux 远程登录——(九)

    Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable ...

  2. django的中间件

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2EAAAGUCAIAAAAzrr3rAAAgAElEQVR4nOy9d5wcx3kmzAXl80m6zy

  3. CBV加装饰器解决登录注册问题和 <<中间件>>

    文本目录 CBV加装饰器解决登录注册问题 一:什么是中间件 二:中间件有什么用 三:自定义中间件 四:中间件应用场景 五:SCRF TOKEN跨站请求伪造 六: 其他操作 CBV加装饰器解决登录注册问 ...

  4. ASP.NET Core 中的那些认证中间件及一些重要知识点

    前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...

  5. ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”

    DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...

  6. ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”

    在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...

  7. ASP.NET Core 中间件之压缩、缓存

    前言 今天给大家介绍一下在 ASP.NET Core 日常开发中用的比较多的两个中间件,它们都是出自于微软的 ASP.NET 团队,他们分别是 Microsoft.AspNetCore.Respons ...

  8. .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法

    .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...

  9. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

随机推荐

  1. qrcode在手机上不显示的问题

    可以试试以下解决方案: 1.修改qrcode.min.js:里的function n()红线区域替换成这个 , 原因是这样子才能支持安卓机显示.

  2. 【LOJ2542】「PKUWC2018」随机游走

    题意 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次询问给定一个集合 \(S\),求如果从 \(x\) 出发一 ...

  3. 扩展新函数给window

    page.exposeFunction(name, puppeteerFunction) name <string> Name of the function on the window ...

  4. 吴裕雄--天生自然JAVA数据库编程:CallableStatement接口

    DELIMITER // DROP PROCEDURE myproc // -- 删除过程 CREATE PROCEDURE myproc(IN p1 int,INOUT p2 int,OUT p3 ...

  5. upload-labs-env文件上传漏洞 1-10关

    Pass-01 首先先看源码: function checkFile() { ].value; if (file == null || file == "") { alert(&q ...

  6. MyISAM与InnoDB 的区别

    1. 事务:InnoDB支持,MyISAM不支持,在InnoDB中每一条SQL语句都会默认封装成事务自动提交,然而这样会影响速度,因此最好把多条SQL语句放在begin和commit之间组成一个事务: ...

  7. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  8. 彻底理解JavaScript中的this

    this 是 JavaScript 语言的一个关键字. 它是函数运行时,在函数体内自动生成的一个对象,只能在函数体内使用. 函数的不同使用场合,this 有不同的值.总的来说,this 就是函数运行时 ...

  9. QObject的timerEvent使用

    其实在QT里,我们自己写的类一般通常需要继承QObject类,因为这一类里规定好的拿来即可用的方法. 比如信号,槽,以及前一个博文写的movetothread方法,这里就是介绍一个QObject的ti ...

  10. 如何从Domino迁移到Exchange 2010

      从Domino 6.x迁移到Exchange 2010利用了微软提供的工具:Microsoft Transporter Suite,该工具不支持从Domino 6.X直接迁移至Exchange 2 ...