--- ibx/trunk/fbintf/client/3.0/FB30Attachment.pas 2016/12/06 10:33:46 45 +++ ibx/trunk/fbintf/client/3.0/FB30Attachment.pas 2017/01/09 15:31:51 47 @@ -48,7 +48,9 @@ type public constructor Create(DatabaseName: string; aDPB: IDPB; RaiseExceptionOnConnectError: boolean); - constructor CreateDatabase(DatabaseName: string; aDPB: IDPB; RaiseExceptionOnError: boolean); + constructor CreateDatabase(DatabaseName: string; aDPB: IDPB; RaiseExceptionOnError: boolean); overload; + constructor CreateDatabase(sql: string; aSQLDialect: integer; + RaiseExceptionOnError: boolean); overload; destructor Destroy; override; property AttachmentIntf: Firebird.IAttachment read FAttachmentIntf; @@ -80,6 +82,10 @@ type function OpenArray(transaction: ITransaction; RelationName, ColumnName: string; ArrayID: TISC_QUAD): IArray; function CreateArray(transaction: ITransaction; RelationName, ColumnName: string): IArray; overload; function CreateArray(transaction: ITransaction; ArrayMetaData: IArrayMetaData): IArray; overload; + function CreateArrayMetaData(SQLType: cardinal; tableName: string; + columnName: string; Scale: integer; size: cardinal; aCharSetID: cardinal; + dimensions: cardinal; bounds: TArrayBounds): IArrayMetaData; + {Database Information} function GetBlobMetaData(Transaction: ITransaction; tableName, columnName: string): IBlobMetaData; @@ -121,7 +127,6 @@ var Param: IDPBItem; IsCreateDB: boolean; begin inherited Create(DatabaseName,aDPB,RaiseExceptionOnError); - FSQLDialect := 3; IsCreateDB := true; if aDPB <> nil then begin @@ -147,6 +152,30 @@ begin end; end; +constructor TFB30Attachment.CreateDatabase(sql: string; aSQLDialect: integer; + RaiseExceptionOnError: boolean); +var IsCreateDB: boolean; + info: IDBInformation; + ConnectionType: integer; + SiteName: string; +begin + inherited Create('',nil,RaiseExceptionOnError); + FSQLDialect := aSQLDialect; + with Firebird30ClientAPI do + begin + FAttachmentIntf := UtilIntf.executeCreateDatabase(StatusIntf,Length(sql), + PAnsiChar(sql),aSQLDialect,@IsCreateDB); + 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; +end; + destructor TFB30Attachment.Destroy; begin inherited Destroy; @@ -320,6 +349,13 @@ begin Result := TFB30Array.Create(self,transaction as TFB30Transaction,ArrayMetaData); end; +function TFB30Attachment.CreateArrayMetaData(SQLType: cardinal; tableName: string; columnName: string; + Scale: integer; size: cardinal; aCharSetID: cardinal; dimensions: cardinal; + bounds: TArrayBounds): IArrayMetaData; +begin + Result := TFB30ArrayMetaData.Create(SQLType,tableName,ColumnName,Scale,size,aCharSetID, dimensions,bounds); +end; + function TFB30Attachment.GetBlobMetaData(Transaction: ITransaction; tableName, columnName: string): IBlobMetaData; begin