--- ibx/trunk/fbintf/client/3.0/FB30Attachment.pas 2018/01/19 09:42:53 116 +++ ibx/trunk/fbintf/client/3.0/FB30Attachment.pas 2018/01/22 13:58:11 117 @@ -61,7 +61,7 @@ type {IAttachment} procedure Connect; procedure Disconnect(Force: boolean=false); override; - function IsConnected: boolean; + function IsConnected: boolean; override; procedure DropDatabase; function StartTransaction(TPB: array of byte; DefaultCompletion: TTransactionCompletion): ITransaction; override; function StartTransaction(TPB: ITPB; DefaultCompletion: TTransactionCompletion): ITransaction; override; @@ -93,14 +93,14 @@ type {Database Information} function GetBlobMetaData(Transaction: ITransaction; tableName, columnName: AnsiString): IBlobMetaData; function GetArrayMetaData(Transaction: ITransaction; tableName, columnName: AnsiString): IArrayMetaData; - function GetDBInformation(Requests: array of byte): IDBInformation; overload; - function GetDBInformation(Request: byte): IDBInformation; overload; + function GetDBInformation(Requests: array of byte): IDBInformation; overload; override; + function GetDBInformation(Request: byte): IDBInformation; overload; override; end; implementation uses FB30Transaction, FB30Statement, FB30Array, FB30Blob, FBMessages, - FBOutputBlock, FB30Events; + FBOutputBlock, FB30Events, IBUtils; { TFB30Attachment } @@ -151,16 +151,15 @@ begin begin Disconnect; Connect; - end; + end + else + GetODSAndConnectionInfo; end; end; constructor TFB30Attachment.CreateDatabase(sql: AnsiString; aSQLDialect: integer; RaiseExceptionOnError: boolean); var IsCreateDB: boolean; - info: IDBInformation; - ConnectionType: integer; - SiteName: AnsiString; begin inherited Create('',nil,RaiseExceptionOnError); FSQLDialect := aSQLDialect; @@ -171,12 +170,10 @@ begin if FRaiseExceptionOnConnectError then Check4DataBaseError; if InErrorState then FAttachmentIntf := nil; - FCharSetID := 0; - FCodePage := CP_NONE; - FHasDefaultCharSet := false; - info := GetDBInformation(isc_info_db_id); - info[0].DecodeIDCluster(ConnectionType,FDatabaseName,SiteName); end; + GetODSAndConnectionInfo; + ExtractConnectString(sql,FDatabaseName); + DPBFromCreateSQL(sql); end; destructor TFB30Attachment.Destroy; @@ -187,7 +184,6 @@ begin end; procedure TFB30Attachment.Connect; -var Param: IDPBItem; begin with Firebird30ClientAPI do begin @@ -198,16 +194,7 @@ begin if InErrorState then FAttachmentIntf := nil else - begin - Param := DPB.Find(isc_dpb_set_db_SQL_dialect); - if Param <> nil then - FSQLDialect := Param.AsByte; - Param := DPB.Find(isc_dpb_lc_ctype); - FHasDefaultCharSet := (Param <> nil) and - CharSetName2CharSetID(Param.AsString,FCharSetID) and - CharSetID2CodePage(FCharSetID,FCodePage) and - (FCharSetID > 1); - end; + GetODSAndConnectionInfo; end; end;