• 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.

  • 相关阅读:
    CentOS 6.5/6.6 安装mysql 5.7 最完整版教程
    linux下的find文件查找命令与grep文件内容查找命令
    为mongodb数据库增加用户名密码权限
    mac 用密钥远程登陆
    MongoDB导入导出以及数据库备份
    ubuntu12.04上的mongodb卸载
    在Ubuntu下进行MongoDB安装步骤
    slice,substr和substring的区别
    再议js的传递和深复制
    js 参数传递
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2347694.html
Copyright © 2020-2023  润新知