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

Comparing ibx/trunk/runtime/IBDatabase.pas (file contents):
Revision 45 by tony, Tue Dec 6 10:33:46 2016 UTC vs.
Revision 49 by tony, Thu Feb 2 16:20:12 2017 UTC

# Line 240 | Line 240 | type
240      procedure CloseDataSets;
241      procedure CheckActive;
242      procedure CheckInactive;
243 <    procedure CreateDatabase;
243 >    procedure CreateDatabase; overload;
244 >    procedure CreateDatabase(createDatabaseSQL: string); overload;
245      procedure DropDatabase;
246      procedure ForceClose;
247      procedure GetFieldNames(const TableName: string; List: TStrings);
# Line 475 | Line 476 | function GenerateTPB(sl: TStrings): ITPB
476   implementation
477  
478   uses  IBSQLMonitor, IBCustomDataSet, IBDatabaseInfo, IBSQL, IBUtils,
479 <     typInfo, FBMessages, IBErrorCodes;
479 >     typInfo, FBMessages, IBErrorCodes, RegExpr;
480  
481   { TIBDatabase }
482  
# Line 609 | Line 610 | begin
610    Connected := true;
611   end;
612  
613 + procedure TIBDataBase.CreateDatabase(createDatabaseSQL: string);
614 + var RegexObj: TRegExpr;
615 + begin
616 +  CheckInactive;
617 +  FAttachment := FirebirdAPI.CreateDatabase(createDatabaseSQL,FSQLDialect);
618 +  RegexObj := TRegExpr.Create;
619 +  try
620 +    {extact database file spec}
621 +    RegexObj.ModifierG := false; {turn off greedy matches}
622 +    RegexObj.Expression := '^ *CREATE +(DATABASE|SCHEMA) +''(.*)''';
623 +    if RegexObj.Exec(AnsiUpperCase(createDatabaseSQL)) then
624 +      FDBName := system.copy(createDatabaseSQL,RegexObj.MatchPos[2],RegexObj.MatchLen[2]);
625 +  finally
626 +    RegexObj.Free;
627 +  end;
628 +  if assigned(FOnCreateDatabase) and (FAttachment <> nil) then
629 +    OnCreateDatabase(self);
630 + end;
631 +
632   procedure TIBDataBase.DropDatabase;
633   begin
634    CheckActive;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines