这个很简单,直接上码。

服务器端声明过程

[kbmMW_Rest('method:get, path:querytable')]
[kbmMW_Method]
function querytable( [kbmMW_Rest('value: "$tname", required: true')] const tblname:string; [kbmMW_Rest('value: "$id", required: true')] const id:string):Tkbmmemtable;

具体实现代码

function TkbmMWCustomHTTPSmartService1.querytable(const tblname,
id: string): Tkbmmemtable;
var
sqls:string; begin
if tblname='' then
begin
kbmMWRaiseHTTPError(,'result:{"ok":"error","value":"table not exist! "}');
end; sqls:='select * from '+tblname;
if id<>'' then
begin
sqls:=sqls+' where CustNo='+id; end; cx.sql.text:=sqls;
try
cx.open;
except
on e:exception do kbmMWRaiseHTTPError( ,e.Message); end; result:=Tkbmmemtable(cx); end;

运行结果

由于这个返回对象是 Tkbmmemtable.

因此出现错误后,服务器返回的是500, 没办法显示具体的错误。

其实对于这个问题,我们也可以解决。

首先我们增加一个 错误信息表

然后我们把错误信息写到这个表里面就可以了

function TkbmMWCustomHTTPSmartService1.querytable(const tblname,
id: string): Tkbmmemtable;
var
sqls:string; begin
result:=errtable;
errtable.Active:=True;
errtable.EmptyTable;
if tblname='' then
begin
errtable.Append;
errtable.FieldByName('ok').AsString:='error';
errtable.FieldByName('msg').AsString:='table not exist!';
errtable.Post; exit; end; sqls:='select * from '+tblname;
if id<>'' then
begin
sqls:=sqls+' where CustNo='+id; end; cx.sql.text:=sqls;
try
cx.open;
except
on e:exception do
begin
errtable.Append;
errtable.FieldByName('ok').AsString:='error';
errtable.FieldByName('msg').AsString:=e.Message;
errtable.Post;
exit; end; end; result:=Tkbmmemtable(cx); end;

我们访问一下试试

没问题了,一切消停了。

使用kbmmw smarthttpservice 简单返回数据库结果的更多相关文章

  1. kbmmw 中简单返回 extjs 数据JSON

    以前,我们通过自己写json 来返回数据表的内容.在delphi 10.2.2中,官方自带了一个FDBatchMoveJSONWriter1 来直接处理数据库内容.把结果推送到浏览器客户端. 今天我们 ...

  2. NHibernate使用ICriteria分页并返回数据库记录总条数

    最近在使用NHibernate,发现进行分页查询无法得到数据库记录的总条数,在网上找了很久没找到具体的实现方法,找到的资料都说得不是很清楚,研究了很久终于写出了这样一个方法. NHibernate下分 ...

  3. Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作

    SQLite  是一个轻量级的免费关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的内存就够了,可以在(http://www.sqlite.org ...

  4. [置顶] Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作

    SQLite  是一个轻量级的免费关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的内存就够了,可以在(http://www.sqlite.org ...

  5. Spring_boot简单操作数据库

    Spring_boot搭配Spring Data JPA简单操作数据库 spring boot 配置文件可以使用yml文件,默认spring boot 会加载resources目录的下的applica ...

  6. Django_简单的数据库交互案例

    https://www.jianshu.com/p/bd0af02e59ba 一.页面展示 做一个简单的数据库交换的练习案例   页面.png 二.创建mysql 表 (1)创建django (2)创 ...

  7. 【JMeter】JMeter进行简单的数据库(mysql)压力测试

    JMeter进行简单的数据库(mysql)压力测试 1.点击测试计划,再点击“浏览”,把JDBC驱动添加进来: 注:JDBC驱动一般的位置在java的安装地址下,路径类似于:    \java\jre ...

  8. java实现简单的数据库的增删查改,并布局交互界面

        一.系统简介 1.1.简介  本系统提供了学生信息管理中常见的基本功能,主要包括管理员.管理员的主要功能有对学生信息进行增加.删除.修改.查找等操作,对信息进行管理,对信息进行修改.查找等操作 ...

  9. PHP简单获取数据库查询结果并返回JSON

    <?php header("Content-type:text/html;charset=utf-8"); //连接数据库 $con = mysql_connect(&quo ...

随机推荐

  1. 回溯法 Generate Parentheses,第二次总结

    class Solution { public: vector<string> ans; void helper(string& cur, int left, int right, ...

  2. linux xfs的一次io异常导致的crash

    returned. [ blocked seconds.----这个默认是120,该环境上是被人为设置1200 [8556407.425653] "echo 0 > /proc/sys ...

  3. Java_监听文件夹或者文件是否有变动

    package org.testWatch.Watch; import java.nio.file.FileSystems; import java.nio.file.Path; import jav ...

  4. Java开发中的23种设计模式(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  5. CSS属性相关

    ·一.宽和高 width属性可以为元素设置宽度. height属性可以为元素设置高度. 块级标签才能设置宽度,内联标签的宽度由内容来决定. 二.字体属性 1.文字字体 font-family可以把多个 ...

  6. 使用pycharm 出现 interpreter field is empty 完美解决方法(转载 记录)

    使用pycharm 出现 interpreter field is empty 主要是因为你的电脑没有正确安装python或者安装python出错,重新下载安装覆盖就行 下载安装包:从Python的官 ...

  7. xml嵌套防止解析

    举个例子 <?xml version="1.0" encoding="UTF-8"?><Messages><Message typ ...

  8. Spring MVC随笔记录

    根据https://blog.csdn.net/abc997995674/article/details/80353410整理 @ModelAttribute 可以用在方法.方法参数上,也可以和@re ...

  9. 关于d3.js 将一个element 拖拽到另一个element的响应事件

    rt 正在做机柜可视化, 一个需求是能拖拽左侧列表的设备名称, 拖到右侧42U机柜中,并将设备图片放置在对应机柜位置上. 开始的时候一切都很顺利,点击左侧设备名称,添加一个g容器,将设备名称作为tex ...

  10. 元组拆包 与 python拆包

    一.元组拆包(元组解包.迭代解包) 元组拆包可以应用到任何可迭代对象上(任何迭代对象),被可迭代对象中的元素数量必须要跟接受这些元素的元组的空档数一致.也可以使用用 * 来表示忽略多余的元素. 一般的 ...