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.

  • 相关阅读:
    mongoDB安装配置
    linux-批量修改目录下后缀shell
    备份mysql的shell
    mysql_DML_索引、视图
    mysql_存储过程
    mysql_备份_mysqldump
    mysql_DCL_grant/revoke
    mysql_DML_select_子查询
    mysql_DML_select_union
    mysql_DML_select_聚合join
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2347694.html
Copyright © 2011-2022 走看看