ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/fbintf/client/3.0/FB30Attachment.pas
(Generate patch)

Comparing ibx/trunk/fbintf/client/3.0/FB30Attachment.pas (file contents):
Revision 262 by tony, Fri Feb 23 12:11:21 2018 UTC vs.
Revision 263 by tony, Thu Dec 6 15:55:01 2018 UTC

# Line 46 | Line 46 | type
46    TFB30Attachment = class(TFBAttachment,IAttachment, IActivityMonitor)
47    private
48      FAttachmentIntf: Firebird.IAttachment;
49 +    FFirebird30ClientAPI: TFB30ClientAPI;
50    protected
51      procedure CheckHandle; override;
52    public
53 <    constructor Create(DatabaseName: AnsiString; aDPB: IDPB;
53 >    constructor Create(api: TFB30ClientAPI; DatabaseName: AnsiString; aDPB: IDPB;
54            RaiseExceptionOnConnectError: boolean);
55 <    constructor CreateDatabase(DatabaseName: AnsiString; aDPB: IDPB; RaiseExceptionOnError: boolean);  overload;
56 <    constructor CreateDatabase(sql: AnsiString; aSQLDialect: integer;
55 >    constructor CreateDatabase(api: TFB30ClientAPI; DatabaseName: AnsiString; aDPB: IDPB; RaiseExceptionOnError: boolean);  overload;
56 >    constructor CreateDatabase(api: TFB30ClientAPI; sql: AnsiString; aSQLDialect: integer;
57        RaiseExceptionOnError: boolean); overload;
58      destructor Destroy; override;
59      function GetDBInfo(ReqBuffer: PByte; ReqBufLen: integer): IDBInformation;
60        override;
61      property AttachmentIntf: Firebird.IAttachment read FAttachmentIntf;
62 +    property Firebird30ClientAPI: TFB30ClientAPI read FFirebird30ClientAPI;
63  
64    public
65      {IAttachment}
# Line 89 | Line 91 | type
91      function CreateArray(transaction: ITransaction; ArrayMetaData: IArrayMetaData): IArray; overload;
92      function CreateArrayMetaData(SQLType: cardinal; tableName: AnsiString;
93        columnName: AnsiString; Scale: integer; size: cardinal; aCharSetID: cardinal;
94 <  dimensions: cardinal; bounds: TArrayBounds): IArrayMetaData;
94 >      dimensions: cardinal; bounds: TArrayBounds): IArrayMetaData;
95  
96  
97      {Database Information}
# Line 110 | Line 112 | begin
112      IBError(ibxeDatabaseClosed,[nil]);
113   end;
114  
115 < constructor TFB30Attachment.Create(DatabaseName: AnsiString; aDPB: IDPB;
115 > constructor TFB30Attachment.Create(api: TFB30ClientAPI; DatabaseName: AnsiString; aDPB: IDPB;
116    RaiseExceptionOnConnectError: boolean);
117   begin
118 +  FFirebird30ClientAPI := api;
119    if aDPB = nil then
120    begin
121      if RaiseExceptionOnConnectError then
122         IBError(ibxeNoDPB,[nil]);
123      Exit;
124    end;
125 <  inherited Create(DatabaseName,aDPB,RaiseExceptionOnConnectError);
125 >  inherited Create(api,DatabaseName,aDPB,RaiseExceptionOnConnectError);
126    Connect;
127   end;
128  
129 < constructor TFB30Attachment.CreateDatabase(DatabaseName: AnsiString; aDPB: IDPB;
129 > constructor TFB30Attachment.CreateDatabase(api: TFB30ClientAPI; DatabaseName: AnsiString; aDPB: IDPB;
130    RaiseExceptionOnError: boolean);
131   var Param: IDPBItem;
132      sql: AnsiString;
133      IsCreateDB: boolean;
134   begin
135 <  inherited Create(DatabaseName,aDPB,RaiseExceptionOnError);
135 >  inherited Create(api,DatabaseName,aDPB,RaiseExceptionOnError);
136 >  FFirebird30ClientAPI := api;
137    IsCreateDB := true;
138    if aDPB <> nil then
139    begin
# Line 138 | Line 142 | begin
142        FSQLDialect := Param.AsByte;
143    end;
144    sql := GenerateCreateDatabaseSQL(DatabaseName,aDPB);
145 <  with Firebird30ClientAPI do
145 >  with FFirebird30ClientAPI do
146    begin
147      FAttachmentIntf := UtilIntf.executeCreateDatabase(StatusIntf,Length(sql),
148                                         PAnsiChar(sql),FSQLDialect,@IsCreateDB);
# Line 157 | Line 161 | begin
161    end;
162   end;
163  
164 < constructor TFB30Attachment.CreateDatabase(sql: AnsiString; aSQLDialect: integer;
164 > constructor TFB30Attachment.CreateDatabase(api: TFB30ClientAPI; sql: AnsiString; aSQLDialect: integer;
165    RaiseExceptionOnError: boolean);
166   var IsCreateDB: boolean;
167   begin
168 <  inherited Create('',nil,RaiseExceptionOnError);
168 >  inherited Create(api,'',nil,RaiseExceptionOnError);
169 >  FFirebird30ClientAPI := api;
170    FSQLDialect := aSQLDialect;
171 <  with Firebird30ClientAPI do
171 >  with FFirebird30ClientAPI do
172    begin
173      FAttachmentIntf := UtilIntf.executeCreateDatabase(StatusIntf,Length(sql),
174                                         PAnsiChar(sql),aSQLDialect,@IsCreateDB);
# Line 185 | Line 190 | end;
190  
191   function TFB30Attachment.GetDBInfo(ReqBuffer: PByte; ReqBufLen: integer): IDBInformation;
192   begin
193 <  Result := TDBInformation.Create;
194 <  with Firebird30ClientAPI, Result as TDBInformation do
193 >  Result := TDBInformation.Create(Firebird30ClientAPI);
194 >  with FFirebird30ClientAPI, Result as TDBInformation do
195    begin
196      FAttachmentIntf.getInfo(StatusIntf, ReqBufLen, BytePtr(ReqBuffer),
197                                 getBufSize, BytePtr(Buffer));
# Line 196 | Line 201 | end;
201  
202   procedure TFB30Attachment.Connect;
203   begin
204 <  with Firebird30ClientAPI do
204 >  with FFirebird30ClientAPI do
205    begin
206      FAttachmentIntf := ProviderIntf.attachDatabase(StatusIntf,PAnsiChar(FDatabaseName),
207                           (DPB as TDPB).getDataLength,
# Line 212 | Line 217 | end;
217   procedure TFB30Attachment.Disconnect(Force: boolean);
218   begin
219    if IsConnected then
220 <    with Firebird30ClientAPI do
220 >    with FFirebird30ClientAPI do
221      begin
222        EndAllTransactions;
223        FAttachmentIntf.Detach(StatusIntf);
# Line 233 | Line 238 | end;
238   procedure TFB30Attachment.DropDatabase;
239   begin
240    if IsConnected then
241 <    with Firebird30ClientAPI do
241 >    with FFirebird30ClientAPI do
242      begin
243        EndAllTransactions;
244        FAttachmentIntf.dropDatabase(StatusIntf);
# Line 246 | Line 251 | function TFB30Attachment.StartTransactio
251    DefaultCompletion: TTransactionCompletion): ITransaction;
252   begin
253    CheckHandle;
254 <  Result := TFB30Transaction.Create(self,TPB,DefaultCompletion);
254 >  Result := TFB30Transaction.Create(FFirebird30ClientAPI,self,TPB,DefaultCompletion);
255   end;
256  
257   function TFB30Attachment.StartTransaction(TPB: ITPB;
258    DefaultCompletion: TTransactionCompletion): ITransaction;
259   begin
260    CheckHandle;
261 <  Result := TFB30Transaction.Create(self,TPB,DefaultCompletion);
261 >  Result := TFB30Transaction.Create(FFirebird30ClientAPI,self,TPB,DefaultCompletion);
262   end;
263  
264   procedure TFB30Attachment.ExecImmediate(transaction: ITransaction; sql: AnsiString;
265    aSQLDialect: integer);
266   begin
267    CheckHandle;
268 <  with Firebird30ClientAPI do
268 >  with FFirebird30ClientAPI do
269    begin
270      FAttachmentIntf.execute(StatusIntf,(transaction as TFB30Transaction).TransactionIntf,
271                      Length(sql),PAnsiChar(sql),aSQLDialect,nil,nil,nil,nil);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines