Home » Tutorials » Datenbanken » Interbase

Interbase

Anlegen der Datenbank

Nun legst du mit dem Tool „Interactive SQL“ (ISQL) eine neue Datenbank an. ISQL besteht aus einem Memo, in das die SQL eingegeben werden, und aus einem Datengrid, in dem die Ergebnisse angezeigt werden.
Dazu auf -> Tools-> Interactive SQL… klicken. Schon startet ISQL. Unter -> Edit -> Options folgende Einstellungen vornehmen:

Character Set =  ISO8859_1
SQL-Dialect = 3

Die Änderungen übernehmen und das Fenster schließen.
Es gibt zwei Möglichkeiten eine DB anzulegen. Den ersten Schritt kann man visuell wie folgt erledigen:
Im Menü auf -> Database -> Create Database klicken. Im nächsten Fenster folgende Daten eingeben:
Alias: adresse
Filenames: c:tempadresse.gdb (oder ein anderes Verzeichniss)
Default Character Set: ISO8859_1
SQL-Dialect: 3
In der IBConsole müsste jetzt die Datenbank auftauchen.
Dieser Weg wird allerdings eher selten vorkommen, da i.d.R. vor dem Erzeugen der Datenbank ein Skript erstellt wird, mit dem die Datenbank dann automatisch erzeugt wird. Bei unserer kleinen DB ist im Skript nicht viel zu sehen:

SET NAMES ISO8859_1;

CREATE DATABASE 'C:IBTutoDatenAdressen.gdb' PAGE_SIZE 4096
User ?EUERUSERNAME!!? Password ?EUERPASSWORT!!?
 DEFAULT CHARACTER SET ISO8859_1

CREATE DOMAIN "TSTR25" AS VARCHAR(25) COLLATE DE_DE;
CREATE DOMAIN "TSTR30" AS VARCHAR(30) COLLATE DE_DE;
CREATE DOMAIN "TPLZ" AS CHAR(5);

CREATE TABLE "ADRESSE"
(
 "ID" INTEGER NOT NULL,
 "NAME"	     TSTR25,
 "VORNAME"	     TSTR25,
 "STRASSE"	     TSTR30,
 "PLZ"	     TPLZ,
 "ORT"	     TSTR30,
 "EMAIL"	     TSTR30,

CONSTRAINT "PK_ADRESSE" PRIMARY KEY ("ID")
);

CREATE GENERATOR "GEN_ADRESSE";

Wenn Du die DB visuell erstellt hast, lösche sie am besten wieder und leg die DB mit dem Skript an. Dazu das beiliegende Skript in der IBConsole unter ISQL Query -> Load Skript laden und dann ausführen lassen (mit CTRL E oder Klick auf das „Blitz“-Icon in der Icon-Leiste). Den Pfad und den Usernamen/Passwort noch entsprechend anpassen! Der Pfad (also die Verzeichnisstruktur muss so existieren!)

Hinweise zum SQL-Skript

Jeder, der schon mal mit SQL zu tun hatte, wird sich im oben abgebildeten Skript sehr schnell zurecht finden. Wenn du damit Probleme hast, solltest du dich vielleicht noch etwas im Bereich SQL anlesen.
Die in IB6 vorhandenen Typen sind sehr gut im Handbuch beschrieben. Selbst mit geringen Englischkenntnissen lässt sich das Handbuch zum Interbase sehr gut lesen.
Die Anweisung SET NAMES ISO8859_1; stellt die deutschen Sprachtreiber ein. Ebenso die Anweisungen DEFAULT CHARACTER SET bzw CHARACTER SET. Weshalb aber mehrfach? Die Anweisung SET NAMES wird dafür benötigt, damit der Client (in diesem Fall ISQL) und der Server mit den gleichen Sprachtreibern kommunizieren, sonst gibt es lustige Fehlermeldungen! DEFAULT CHARACTER SET stellt den Sprachtreiber für die Datenbank (das File) ein und die Anweisung „COLLATE DE_DE“ die deutsche Sortierreihenfolge.

Hinweise zu CREATE DOMAIN

Im Skript verwende ich DOMAINS. Damit kann man eigene Datentypen definieren, vergleichbar mit Delphi. Wird beim Erstellen einer DB auf Domains verzichtet, generiert IB für jede Spalte eine eigene Domain, selbst wenn es sich um identische Deklarationen handelt! Es macht also, neben der einfacheren schreibweise, durchaus Sinn, Domains zu verwenden.

Weshalb ein SQL-Skript

Das SQL-Skript kann man sehr einfach in einem Texteditor erstellen, während man sich Gedanken über die DB macht (gemacht hat). Wenn dann die Fehler im Skript korrigiert sind, hat man sehr schnell ohne große Tipp- und Klickarbeit eine „jungfräuliche“ Datenbank.
Nach dem Erstellen der Datenbank muss diese in der IBConsole noch registriert werden. Dazu einfach im Hauptmenü der IBConsole Database -> Register öffnen (ISQl kannst du schließen). In diesem Fenster das DB-File auswählen, den User und das Passwort eintragen sowie das Default Character Set auf ISO8859_1 setzen und OK klicken. Die IBConsole kann offen bleiben, ist für die Kontrolle der Programmfunktionen sicherlich sinnvoll. Bei dem kleinen Projekt kannst du sie auch schließen.