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.

  • 相关阅读:
    oracle学习之数据库数据保存成文件
    秦时明月这部烂电视
    Oracle学习之buffer cache(copy过来的文本,待补充笔记)
    Oracle学习之shared pool及sga的大小的设置
    Oracle学习之sql共享以及4031解决方法
    Oracle学习之内存块组成结构及4031错误分析
    树形逻辑套路总结
    HashMap并发分析
    JVM常用指标查询
    读Lock-Free论文实践
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2347694.html
Copyright © 2011-2022 走看看