zoukankan      html  css  js  c++  java
  • sql工厂类

    //author: cxg
    //sql工厂

    unit MySQL;

    interface

    uses
      SysUtils, SqlExpr, DBClient, db, DBXCommon,Provider;

    type
      TMySQL = class(TObject)
      private
        fSqlcommand: string;
        fQry: TClientDataSet;
        fSqlMethod: TSqlServerMethod;
        fSqlConnection: TSQLConnection;
        fDbxTrans: TDBXTransaction;
        fP:TDataSetProvider;
        fD:TClientDataSet;
        procedure SetConnection(Cn:TSQLConnection);
      public
        constructor Create;
        destructor Destroy; override;
        procedure AddParam(const Value: Variant);
        //说明: 添加参数值
        //参数: const aValue: Variant -- 参数值
        function GetData: TDataSet;  //非事务性查询
        procedure ExecSql;              //事务性操作
        procedure BeginTrans;          //开始事务
        procedure CommitTrans;         //提交事务
        procedure RollbackTrans;       //回滚事务
        property CommandText: string read fSqlcommand write fSqlcommand;  //sql语句
        property Connection: TSQLConnection read fSqlConnection write SetConnection; //连接控件
      end;

    implementation

    { TMySQL }

    procedure TMySQL.AddParam(const Value: Variant);
    begin
      fQry.Params.AddParameter.Value :=Value;
    end;

    procedure TMySQL.BeginTrans;
    begin
      fDbxTrans :=fSqlConnection.BeginTransaction;
    end;

    procedure TMySQL.CommitTrans;
    begin
      fSqlConnection.CommitFreeAndNil(fDbxTrans);
    end;

    constructor TMySQL.Create;
    begin
      inherited;
      fQry := TClientDataSet.Create(nil);
      fSqlMethod :=TSqlServerMethod.Create(nil);
      fp:=TDataSetProvider.Create(nil);
      fP.Name :='p23424';
      fd:=TClientDataSet.Create(nil);
      fD.ProviderName :=fp.Name;
    end;

    destructor TMySQL.Destroy;
    begin
      fQry.Free;
      fQry :=nil;
      fP.Free;
      fp:=nil;
      fD.Free;
      fd:=nil;
      fSqlMethod.Free;
      fSqlMethod :=nil;
      inherited;
    end;

    procedure TMySQL.ExecSql;
    begin
      fSqlMethod.ServerMethodName := 'TServerMethods1.PostData';
      fSqlMethod.ParamByName('sql').AsString := fSqlcommand;
      fSqlMethod.ParamByName('params').AsParams := fQry.Params;
      fSqlMethod.ExecuteMethod;
    end;

    function TMySQL.GetData: TDataSet;
    begin
      fSqlMethod.ServerMethodName := 'TServerMethods1.getData';
      fSqlMethod.ParamByName('sql').AsString := fSqlcommand;
      fSqlMethod.ParamByName('params').AsParams := fQry.Params;
      fSqlMethod.ExecuteMethod;
      Result := fSqlMethod.ParamByName('returnparameter').AsDataSet;
    end;

    procedure TMySQL.RollbackTrans;
    begin
      fSqlConnection.RollbackFreeAndNil(fDbxTrans);
    end;

    procedure TMySQL.SetConnection(Cn: TSQLConnection);
    begin
      if (fSqlMethod.SQLConnection =nil) then
      fSqlMethod.SQLConnection := Cn;
    end;

    end.

  • 相关阅读:
    golang的slice作为函数参数传值的坑
    编程语言学习网站
    Ubuntu 下 kdevelop下 怎么向主函数传递参数
    kdevelop使用笔记
    深度学习资料
    微信跳一跳辅助外挂的开发
    octomap的简介
    视觉slam十四讲开源库安装教程
    linux下pip安装pygame
    opencv学习笔记霍夫变换——直线检测
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2347694.html
Copyright © 2011-2022 走看看