首页 > 编程语言 >DELPHI模板编程

DELPHI模板编程

时间:2023-12-17 10:00:30浏览次数:35  
标签:begin end DELPHI 编程 db pool qry where 模板

DELPHI模板编程

procedure TCRUD<T>.execsql(OnTableModel: TTableModel);
//执行事务性SQL
begin
  if req.Body = nil then
    Exit;
  var pool: TDBPool := GetDBPool(dbid);  //database pool
  db := pool.Lock;
  try
    try
      table := serialize.TSerial<TTable<T>>.unjson(TStream(req.Body));  //json string--->record
      db.startTrans;                //开启事务
      for var i: Integer := 0 to High(table.rows) do
      begin
        db.qry.Close;
        db.qry.SQL.Clear;
        db.qry.sql.add(sql);
        OnTableModel(db, table, i);  //set field value
        db.qry.ExecSQL;
      end;
      db.commitTrans;         //提交事务
      res.Send(success);
    except
      on E: Exception do
      begin
        db.rollbackTrans;     //回滚事务
        res.Send(error(E.Message));
        WriteLog(func + E.Message);
      end;
    end;
  finally
    pool.Unlock(db);
  end;
end;

procedure TCRUD<T>.open(OnTableModel: TTableModel);
//查询
begin
  var pool: TDBPool := GetDBPool(dbid);
  db := pool.Lock;
  try
    try
      var where: string;              //where条件
      if req.Body <> nil then
        where := TEncoding.UTF8.GetString(TBytesStream(req.Body).Bytes);
      var lsql: string;
      if where = '' then             //拼SQL查询命令
        lsql := sql
      else
        lsql := sql + ' where ' + where;
      db.select(lsql);       //查询
      SetLength(table.rows, db.qry.RecordCount);    //记录条数
      var i: Integer := 0;
      db.qry.First;                    //dataset--->record
      while not db.qry.Eof do
      begin
        OnTableModel(db, table, i);    //set field value
        db.qry.Next;
        Inc(i);
      end;
      res.Send(TSerial<TTable<T>>.json(table));   //send json string
    except
      on E: Exception do
      begin
        res.Send(error(E.Message));
        writelog(func + E.Message);
      end;
    end;
  finally
    pool.Unlock(db);
  end;
end;

  

标签:begin,end,DELPHI,编程,db,pool,qry,where,模板
From: https://www.cnblogs.com/hnxxcxg/p/17908794.html

相关文章

  • 实验6 模板类、文件I/O和异常处理
    实验任务41#defineVECTOR_HPP2#include<iostream>3#include<stdexcept>4usingnamespacestd;5template<typenameT>6classVector{7private:8T*data;9size_tsize;10public:11Vector(size_ta):size(a......
  • 实验六 模板类、文件I/O和异常处理
    实验任务4Vector.hpp:1#pragmaonce23#include<iostream>4#include<stdexcept>56usingnamespacestd;78template<typenameT>9classVector10{11private:12intsize;13T*ptr;14public:1516Vector(in......
  • 实验6 模板类、文件I/O和异常处理
    任务4#include<iostream>#include<stdexcept>#include<stdlib.h>template<typenameT>classVector{public:friendvoidoutput(constVector<T1>&v);Vector<T>()=default;Vector<T......
  • linux c 编程 --- 协程
    什么是协程协程(Coroutines)是一种比线程更加轻量级的存在,协程可以理解为一个特殊的函数,这个函数可以在某个地方挂起去执行别的函数,并且可以返回挂起处继续执行。一个线程内可以由多个协程来交互运行,但是多个协程的运行是绝对串行的,也就是说同一时刻只有一个协程在运行,当一个协程......
  • Storm 集群的搭建及其Java编程进行简单统计计算
    一、Storm集群构建编写storm与zookeeper的yml文件 stormyml文件的编写具体如下:version:'2'services:zookeeper1:image:registry.aliyuncs.com/denverdino/zookeeper:3.4.8container_name:zk1.cloudenvironment:-SERVER_ID=1......
  • C++ AOP 编程介绍
    AOP(Aspect-OrientedProgramming)是一种编程范式,将程序的非核心逻辑都“横切”处理,实现非核心逻辑与核心逻辑的分离【1】在日常工作中,会遇到一类需求:统计业务处理的耗时或者加锁,业务函数可以动态替换而非侵入式修改业务函数;简单粗暴的方法是:RetProcess(...)//业务函数{......
  • Java jxl操作excel模板
    jxl操作excel模板创建工作簿FileexcelFile=newFile("fileName.xls");WritableWorkbookwtwb=Workbook.createWorkbook(excelFile);//创建工作簿创建工作表WritableSheetsheet=wtwb.createSheet(title,0);//创建sheet表设置默认列宽sheet.getSettings().s......
  • cuda编程的简单案例
    一个简单的案例:header.hvoidaddKernel(constint*a,constint*b,int*c,intsize); test.cu#include"cuda_runtime.h"#include"device_launch_parameters.h"#include"header.h"__global__voidadd(constint*a,constint*......
  • 实验6 模板类、文件I/O和异常处理
    实验任务4Vector.hpp1#pragmaonce23#include<iostream>4#include<stdexcept>56usingnamespacestd;78template<typenameT>910classVector{11private:12T*data;13size_tsize;1415public:16......
  • 区间素数筛模板
    例题素数密度template<typenameT>structsegment_sieve{ vector<bool>is_prime,is_prime_small; vector<T>prime; segment_sieve(){ is_prime.resize(1000010); is_prime_small.resize(1000100); } //对区间[a,b]内的整数执行筛法,is_prime[i-a]=true---......