使用kbmmw smarthttpservice 简单返回数据库结果

时间:2023-03-08 16:17:28

这个很简单,直接上码。

服务器端声明过程

[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;

运行结果

使用kbmmw smarthttpservice 简单返回数据库结果

由于这个返回对象是 Tkbmmemtable.

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

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

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

使用kbmmw smarthttpservice 简单返回数据库结果

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

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 简单返回数据库结果

使用kbmmw smarthttpservice 简单返回数据库结果

没问题了,一切消停了。