zoukankan      html  css  js  c++  java
  • 使用kbmmw smarthttpservice 简单返回数据库结果

    这个很简单,直接上码。

    服务器端声明过程

    [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(500,'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(500 ,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;

    我们访问一下试试

    没问题了,一切消停了。

  • 相关阅读:
    这个夏天,感动我的歌,感动我的你
    设计中最困难的部分在于决定要设计什么 设计原本择录
    Sql效能优化总结(续) sql语句优化篇
    sql效能优化总结
    使用AStyle进行代码格式化
    迭代模型 转
    软件项目开发系列开篇杂谈
    Sql效能优化总结(续) 架构调整篇
    throw和throw ex的区别
    面向过程&面向对象 UML&RUP
  • 原文地址:https://www.cnblogs.com/xalion/p/10164798.html
Copyright © 2011-2022 走看看