Transcript

Delphi & FIBPlus

Firebird und InterBase mit Delphi und FIBPlus

DL33 | IB4

2

Was ist FIBPlus

Komponenten zum nativen Zugriff auf Interbase und Firebird

Alternative zu IBX mit Unterstützung des Open-Source RDBMS Firebird

Verfügbar für Delphi ( 3-7 ), C++-Builder (5-6 ) und Kylix 3

Unterstützt Interbase 4-7.x und Firebird 1.x

3

Hersteller und Bezugsquellen

Hersteller

Devrace Software Developmenthttp://www.devrace.com

Bezugsquellen im Netz

http://www.devrace.com/en/shop/index.phphttp://www.better-office.de

4

Komponenten I

TpFIBDatabase TpFIBDataSet

TpFIBTransaction TpFIBQuery

TpFIBStoredProc TpFIBUpdateObject

TDataSetsContainer TpFibErrorHandler

TpFIBStatistic TSIBfibEventAlerter

TFIBSQLMonitor TpFIBClientDataSet

TpFIBDataSetProvider

5

Komponenten II

TpFIBServerProperties TpFIBConfigService

TpFIBLicensigService TpFIBLogService

TpFIBStatisticalService TpFIBBackupService

TpFIBRestoreService TpFIBValidationService

TpFIBSecurityService TpFIBInstall

TpFIBUnInstall

6

Zugriff auf InterBase & FireBird

Anwendung

fbclient.dll gds32.dll

Firebird Interbase

7

Firebird fbClient vs. GDS32

fbclient.dll gds32.dll

Generator instclient.exe

instclient i[nstall] [ -f[orce] ] library q[uery] library

r[emove] library

Client-Library ist: f[bclient] | g[ds32]

8

FIBDatabase I

9

FIBDatabase II

pFIBDatabase.Connected := false; pFIBDatabase.DBParams.Clear; pFIBDatabase.DBParams.Add ( 'user_name=' + FUsername ); pFIBDatabase.DBParams.Add ( 'password=' + FPassword ); pFIBDatabase.DBParams.Add ( 'lc_ctype=ISO8859_1'); pFIBDatabase.DBParams.Add ( 'SQL_DIALECT=3' ); pFIBDatabase.SQLDialect := 3; pFIBDatabase.DBName := Datenbank; pFIBDatabase.Connected := true;

10

FIBDatatset – SQLGenerator I

11

FIBDatatset – SQLGenerator IIErzeugen von Live-Querys I

12

FIBDatatset – SQLGenerator IIIErzeugen von Live-Querys II

13

FIBDatatset – SQLGenerator IVErzeugen von Live-Querys III

14

FIBDatatset – SQLGenerator VpFIBDSImpSrc.SelectSQL.Add('SELECT * FROM ' + Tabelle );pFIBDSImpSrc.Open;

pFIBDSImpSrc.InsertSQL.Add (pFIBDSImpSrc.GenerateSQLTextWA ( Tabelle , skInsert ));

pFIBDSImpSrc.UpdateSQL.Add ( pFIBDSImpSrc.GenerateSQLTextWA ( Tabelle , skModify));

pFIBDSImpSrc.DeleteSQL.Add (pFIBDSImpSrc.GenerateSQLTextWA ( Tabelle ,skDelete));

pFIBDSImpSrc.RefreshSQL.Add (pFIBDSImpSrc.GenerateSQLTextWA ( Tabelle ,skRefresh));

15

FIBDatatset – Transaktionen IAutoCommitAutomatische TransaktionsteuerungBei Live-Querys

poStartTransactionStart einer Transaktion beim Open

16

FIBDatatset – Transaktionen IIUnterschiedliche Transaktionenfür Lesen und Schreiben

Verhinderung von Deadlocks

WriteTransaction nach Post

17

FIBDataSet – Master /Detail

Im Detail-DataSet müssen einige Eigenschaft gesetzt werden

dcForceOpen = Detail-DataSet wird nach öffnen des Master-DataSets ebenfalls geöffnet

dcForceMasterRefresh = wird der Cursor in einem Master-DataSet geändert, wird automatisch das Detail-

DataSet neu geöffnet

18

FIBDataSet – Arrays-Felder I with ArrayDataSet do begin try FInShowArrays := true; v := ArrayFieldValue(FieldByName('LANGUAGE_REQ')); Edit1.Text := VarToStr(v[1]); Edit2.Text := VarToStr(v[2]); Edit3.Text := VarToStr(v[3]); Edit4.Text := VarToStr(v[4]); Edit5.Text := VarToStr(v[5]); finally FInShowArrays:=false end;End;

19

FIBDataSet – Arrays-Felder II

with ArrayDataSet do begin SetArrayValue(FieldByName('LANGUAGE_REQ'), VarArrayOf([ Edit1.Text, Edit2.Text, Edit3.Text, Edit4.Text, Edit5.Text ])); end;

20

FIBDataSetContainerZentrale Behandlung von Ereignissenfür alle TpFIBDatasets, Events werden„gedoppelt“.

OnDataSetEvent = Ereignis eines TpFIBDateset ( Bsp. if Event = deOnNewRecord then ... )

OnUserEvent = Durch Programm definertes Ereignis

21

FIBQuery I

22

FIBQuery II - SQLGenerator

23

FIBQuery III

Select

pFIBQuery.ParamByName ( ‚PARAM_1' ).Value := Wer; pFIBQuery.Open;

Insert | Update | Delete

pFIBQuery.ParamByName ( ‚PARAM_1' ).Value := Wer; pFIBQuery.ExecQuery;

24

FIBStoredProc

basiert auf FIB-Query ,

Erweiterungen zum einfachen Zugriff auf Stored Proceduren

25

ExceptionExeptionhandling via Klasse EFIBError

A:EFIBError

ErrorCode :FLastErrorNum := A.IBErrorCode;

ErrorMessage :FLastErrorMsg := A.Message;

Unit : siehe FIB.SQL

26

FIBErrorHandler

Applikationsweites Fehlerhandling

procedure TDatamoduleFirebirdConnection.pFibErrorHandler1FIBErrorEvent( Sender: TObject; ErrorValue: EFIBError; KindIBError: TKindIBError; var DoRaise: Boolean);begin ...end;

27

FIBSQLMonitorStart : FIBSQLMonitor.Active := true;

Protokoll schreiben:

procedure TDBMod.FIBSQLMonitorSQL

(EventText: String; EventTime: TDateTime);

begin

writeln ( TraceFile , DateTimeToStr ( EventTime ) + ':' + EventText );

end;

Ende : FIBSQLMonitor.Active := false;

28

Nutzerverwaltung - TpFIBSecurityService

Bsp. : Das Anlegen eines Nutzers

// ---------------------------------------------------------------------------------------------

pFIBSecurityService.SecurityAction := ActionAddUser;

pFIBSecurityService.FirstName := ‚Hermann‘;

pFIBSecurityService.LastName := ‚Mustermann‘;

pFIBSecurityService.UserName := ‚scott‘;

pFIBSecurityService.Password := ‚tiger‘;

pFIBSecurityService.AddUser;

// ---------------------------------------------------------------------------------------------

29

TpFIBBackupService// ---------------------------------------------------------------------------------------------pFIBBackupService.BackupFile.Clear;pFIBBackupService.Params.Clear;// ---------------------------------------------------------------------------------------------pFIBBackupService.Params.Add ( 'user_name=sysdba' );pFIBBackupService.Params.Add ( 'password=masterkey‚ );pFIBBackupService.DatabaseName := ‚C:\Test.fdb‘;pFIBBackupService.BackupFile.Add ( ‚C:\Test.fbk‘ );// ---------------------------------------------------------------------------------------------pFIBBackupService.Active := true;pFIBBackupService.ServiceStart;while pFIBBackupService.IsServiceRunning do ;pFIBBackupService.Active := false;// ---------------------------------------------------------------------------------------------

30

TpFIBRestoreService// ---------------------------------------------------------------------------------------------pFIBRestoreService.BackupFile.Clear;pFIBRestoreService.BackupFile.Add ( ‚C:\Test.fbk‘ );// ---------------------------------------------------------------------------------------------pFIBRestoreService.Params.Clear;pFIBRestoreService.Params.Add ( 'user_name=sysdba' );pFIBRestoreService.Params.Add ( 'password=masterkey‚ );pFIBRestoreService.DatabaseName := ‚C:\Test.fdb‘;pFIBRestoreService.BackupFile.Add ( ‚C:\Test.fbk‘ );// ---------------------------------------------------------------------------------------------pFIBRestoreService.Active := true;pFIBRestoreService.ServiceStart;while pFIBRestoreService.IsServiceRunning do ;pFIBRestoreService.Active := false;// ---------------------------------------------------------------------------------------------

31

MacrosSyntax : @MACROS_NAME[%][#]

@ - Beginn eines Macros

% - Standardwert ( optional )

# - Wert in Hochkommas

Bsp.:

select * from @TT%TABLE1 where @F%FIELD1=@VAL%#John

Standardinterpretation:

select * from TABLE1 where FIELD1=‚John‘

32

verfügbare Erweiterungen

gd_DataSetsComponentenDataSet-Ableitungen auf Basis von FIBPlus ( und IBX ) für die Verarbeitung große Datenmengen

pFIBExtractExtraktion von Metadaten in ein SQL-Skript

pFIBScript Sriptkomponente ( Funktionalität entspricht IBX-Skriptkomponente )

http://www.devrace.com/en/fibplus/download/index.php?BID=19&ID=43

33

Tools

IBExpert( Personal – Version ist frei ) http://www.ibexpert.com

IBAdminhttp://www.sqlly.com

u.v.a. mehr -> www.interbasetools.de


Recommended