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);
??? //說明: 添加參數(shù)值
??? //參數(shù): const aValue: Variant -- 參數(shù)值
??? 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.
轉(zhuǎn)載于:https://www.cnblogs.com/hnxxcxg/archive/2012/02/12/2347694.html
總結(jié)
- 上一篇: BeanUtils.copyProper
- 下一篇: ICEfaces抄袭PrimeFaces