AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird Database erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Database erstellen

Ein Thema von strom · begonnen am 1. Feb 2015 · letzter Beitrag vom 1. Feb 2015
Antwort Antwort
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#1

Firebird Database erstellen

  Alt 1. Feb 2015, 09:12
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBC
Hallo,

habe ein Problem, eine DB mit Firebird zu erstellen!
Benutze die Komponente "IBDAC"

Was ist IBDatabase1 ?Diese Komponente finde ich nicht?

Hier ein Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  IBDatabase1.DatabaseName := 'GameDB.fdb'; // Was ist IBDatabase1? Diese Komponente gibt es nicht!
  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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Firebird Database erstellen

  Alt 1. Feb 2015, 09:33
Der Code ist für IBX und nicht für IBDac. IBDatabase1 ist vom Typ TIBDatabase.
Bei IBDAC heißt die Klasse TIBCConnection

http://www.devart.com/ibdac/docs/
http://www.devart.com/ibdac/docs/components_ibdac.htm

Ich würde die Tabelle auch per SQL erstellen lassen (TIBCQuery oder noch besser TIBCScript)

SQL-Code:
create table highscore (
  id bigint not null,
  Game varchar(20) not null,
  UserID bigint not null, //Ich gehe davon aus, das ist ein FK
  PlayScore integer not null,
  PlayLevel ftInteger not null,
  Playername varchar(40) not null, //gehört in Usertabelle
  PlayerURL varchar(80) not null, // das auch
  PlayereMail varchar(80), //dito
  PlayerMessenger varchar(80) not null, //dito
  Datum, DateTime not null, //DateTime ist ein TimeStamp
  primary key (id));
Markus Kinzler

Geändert von mkinzler ( 1. Feb 2015 um 10:01 Uhr)
  Mit Zitat antworten Zitat
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#3

AW: Firebird Database erstellen

  Alt 1. Feb 2015, 10:05
Danke
  Mit Zitat antworten Zitat
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#4

AW: Firebird Database erstellen

  Alt 1. Feb 2015, 11:34
So,

wie kann ich jetzt überprüfen ob eine Database vorhanden ist, oder nicht!

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  begin
  IBCConnection1.Database := ExtractFilePath(Application.ExeName)+'Test.fdb';
  IBCConnection1.Params.Clear;
  IBCConnection1.Params.Add('USER ''SYSDBA''');
  IBCConnection1.Params.Add('PASSWORD ''masterkey''');
  IBCConnection1.Params.Add('PAGE_SIZE 4096');
  IBCConnection1.Params.Add('DEFAULT CHARACTER SET WIN1250');
  IBCConnection1.CreateDatabase;
  IBCConnection1.Connected := false;
  IBCConnection1.Params.Clear;
  IBCConnection1.Params.Add('USER_NAME=SYSDBA');
  IBCConnection1.Params.Add('PASSWORD=masterkey');
  IBCConnection1.Connected := true;
  IBCTransaction1.Active := true;
   with IBCTable1 do begin
     active:=false;
    TableName:='TEST';
     with FieldDefs do begin
      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;
   end;
  end;
end;
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Firebird Database erstellen

  Alt 1. Feb 2015, 11:49
wie kann ich jetzt überprüfen ob eine Database vorhanden ist, oder nicht!
Zum Beispiel so¿

Delphi-Quellcode:
  if FileExists(ExtractFilePath(Application.ExeName)+'Test.fdb') then
    // Datenbank ist vorhanden
    // ok, öffnen und damit arbeiten
  else
    // Datenbank ist nicht vorhanden
    // (nach Rückfrage:) neue Datenbank erstellen
  ...
end;
(ungetestet)
Michael Justin
  Mit Zitat antworten Zitat
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#6

AW: Firebird Database erstellen

  Alt 1. Feb 2015, 12:04
Hallo,

doch noch ein Fehler?

IBCTable.TableName // Steht nichts drin? Unter Eigenschaft 'TableName' ist das Ereignis leer?

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
 if FileExists(ExtractFilePath(Application.ExeName)+'Test.fdb') then
  begin
   IBCTable1.TableName := 'Test';
   IBCTAble1.Active := true;
  end else
begin
  IBCConnection1.Database := ExtractFilePath(Application.ExeName)+'Test.fdb';
  IBCConnection1.Params.Clear;
  IBCConnection1.Params.Add('USER ''SYSDBA''');
  IBCConnection1.Params.Add('PASSWORD ''masterkey''');
  IBCConnection1.Params.Add('PAGE_SIZE 4096');
  IBCConnection1.Params.Add('DEFAULT CHARACTER SET WIN1250');
  IBCConnection1.CreateDatabase;
  IBCConnection1.Connected := false;
  IBCConnection1.Params.Clear;
  IBCConnection1.Params.Add('USER_NAME=SYSDBA');
  IBCConnection1.Params.Add('PASSWORD=masterkey');
  IBCConnection1.Connected := true;
  IBCTransaction1.Active := true;
   with IBCTable1 do begin
     active:=false;
    TableName:='TEST';
     with FieldDefs do begin
      clear;
       Add('ID', ftInteger, 0, false); // AUTOINC Gibt es nicht, folgt später!!!
       Add('ICON', ftString, 20, false);
       Add('EINSATZNR', ftString, 10, false);
       Add('DATUM', ftString, 10, false);
       Add('ZEIT', ftString, 10, false);
       Add('EINSATZSTATUS', ftString, 10, false);
       Add('EINSATZSTICHWORT', ftString, 20, false);
       Add('EINSATZSTADT', ftString, 40, false);
       Add('EINSATZORT', ftString, 40, false);
       Add('EINSATZADRESSE', ftString, 40, false);
       Add('EINSATZMELDUNG', ftString, 100, false);
       Add('ELPNAME', ftString, 40, false);
       Add('ELPIP', ftString, 40, false);
       Add('EINSATZHINWEIS', ftString, 40, false);
       Add('EINSATZOBJEKT', ftString, 100, false);
     end;
   end;
  end;
end;

Geändert von strom ( 1. Feb 2015 um 12:12 Uhr)
  Mit Zitat antworten Zitat
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#7

AW: Firebird Database erstellen

  Alt 1. Feb 2015, 12:21
Hallo mkinzler

wie würde das anlegen über TIBCScript aussehen?
  Mit Zitat antworten Zitat
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#8

AW: Firebird Database erstellen

  Alt 1. Feb 2015, 13:00
Habe jetzt noch:

CreateTable; hinzugefügt!

Fehlermeldung: Undeklarieter Bezeichner?
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Firebird Database erstellen

  Alt 1. Feb 2015, 14:03
Undeklarierter Bezeichner heißt: Diese Methode gibt es bei den IbDac-Queries nicht.
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:01 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