AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Firebird Datenbank erzeugen mit Bordmitteln und autoinc Feld

Firebird Datenbank erzeugen mit Bordmitteln und autoinc Feld

Ein Tutorial von Mavarik · begonnen am 30. Mär 2007 · letzter Beitrag vom 29. Apr 2007
 
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#1

Firebird Datenbank erzeugen mit Bordmitteln und autoinc Feld

  Alt 30. Mär 2007, 13:59
Hallo Zusammen!

Hier mein erstes Tutorial!
Diese Infos habe ich nur durch die Hilfe von mkinzler und zahlreichen google infos zusammen stellen können.

Die Aufgabe:
Mit Delphieigenen Komponenten eine Firebird Datenbank und Tabelle zu erzeugen. (embedded Version 2.01 von Firebird)

Vorbereitung:
Auf ein Formular werden folgende Komponenten geklicket...
Delphi-Quellcode:
IBDatabase1: TIBDatabase;
IBTable1: TIBTable;
IBTransaction1: TIBTransaction;
IBSQL1: TIBSQL;

DataSource1: TDataSource;
DBGrid1: TDBGrid; // Damit man auch ein Ergebniss sieht.

Button1: TButton;
Danach die "üblichen" verdächtigen miteinander verlinken...

IBTable1 -> IBDatabase1
IBTable1 -> IBTransaction1

IBTransaction1 -> IBDatabase1

IBSQL1 -> IBDatabase1
IBSQL1 -> IBTransaction1

DBGrid1 -> Datasource1
Datasource1 -> IBTable1

Button1 -> Button1Click

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  IBDatabase1.DatabaseName := 'GameDB.fdb';
  IBDatabase1.Params.Clear;
  IBDatabase1.Params.Add('USER ''SYSDBA'''); // Wenn hier USER_NAME angegeben wird funktioniert es nicht!
  IBDatabase1.Params.Add('PASSWORD ''masterkey'''); // Natürlich "nur" mit Leertaste
  IBDatabase1.Params.Add('PAGE_SIZE 4096');
  IBDatabase1.Params.Add('DEFAULT CHARACTER SET WIN1250');

  IBDatabase1.CreateDatabase;

  IBDatabase1.Connected := false;
  IBDatabase1.Params.Clear;
  IBDatabase1.Params.Add('USER_NAME=SYSDBA'); // Wenn hier USER angegeben wird funktioniert es nicht!
  IBDatabase1.Params.Add('PASSWORD=masterkey'); // Natürlich "nur" mit "="
  IBDatabase1.Connected := true;

  IBTransaction1.Active := true;

  with IBTable1 do begin
    active:=false; // Tablen-Zugriff muss auf jeden Fall geschlossen sein

    TableName:='HIGHSCORE'; // Tabellen Name IN UPPERCASE!!!
                                 // SONST FUNKTIONIERT ES NICHT
    with FieldDefs do begin // Eine kleine Tabelle um Highscores zu speichern...
      clear;
      Add('ID', ftInteger, 0, false); // AUTOINC Gibt es nicht, folgt später!!!
      Add('Game', ftString, 20, false);
      Add('UserID', ftString, 8, false);
      Add('PlayScore', ftInteger, 0, false);
      Add('PlayLevel', ftInteger, 0, false);
      Add('Playername', ftString, 40, false);
      Add('PlayerURL', ftString, 80, false);
      Add('PlayereMail', ftString, 80, false);
      Add('PlayerMessenger', ftString, 80, false);
      Add('Datum', ftDateTime, 0, false); // NICHT ETWAR TIMESTAMP das gibt es nicht...
    end;
    CreateTable;
  end;

  IBTransaction1.Commit; // MUSS ERSTMAL WEG SONST GEHT DER TRIGGER NICHT

  IBTransaction1.Active := true;
  IBSQL1.SQL.Text := 'CREATE GENERATOR autoinc;';
  IBSQL1.ExecQuery;
  IBSQL1.SQL.Text := 'SET GENERATOR autoinc TO 0;';
  IBSQL1.ExecQuery;
  IBSQL1.SQL.Clear;
  IBSQL1.SQL.Add('CREATE TRIGGER OhMannFirebird for HIGHSCORE');
  IBSQL1.SQL.Add('active before insert position 0');
  IBSQL1.SQL.Add('as');
  IBSQL1.SQL.Add('begin');
  IBSQL1.SQL.Add(' new.id = gen_id( autoinc, 1 );');
  IBSQL1.SQL.Add('end');
  IBSQL1.ExecQuery;
  IBTransaction1.Commit;

  // und mal einen Testdatensatz erzeugen

  IBTransaction1.Active := true;
  IBSQL1.SQL.Text := 'INSERT INTO HIGHSCORE("Game") VALUES (''Tetris'');';

  // ACH JA HIER MUSSTE ES NATÜRLICH AUCH WIEDER ANDERS SEIN...
  // Immer schön "Quoten" wenn die Felder kleine Buchstaben haben
  // Und bitte Strings natürlich auch immer in... Nein die brauchen wieder "nur" '

  IBSQL1.ExecQuery;
  IBTransaction1.Commit;

  IBTable1.Active := true; // So jetzt haben wir endlich eine MySQL Tabelle die Funktioniert wie "wir" es erwarten...
end;
Ich hoffe es erspart Euch die lange Sucherei!!!

Grüsse Frank
  Mit Zitat antworten Zitat
 

Themen-Optionen Tutorial durchsuchen
Tutorial durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz