Hallihallo!
Ich habe mich in letzter Zeit etwas mit Datenbanken im Internet beschäftigt, und möchte euch (nach zig Fehlversuchen) das Ergebnis meiner Anstrengungen in (hoffentlich) leicht verständlicher Form näherbringen.
Für unser kleines Beispielprogramm brauchen wir:
- Die Komponenten ZeosLib (Hier erhältlich), die Installationsanleitung ist beim entpackten Archiv in der Datei 'installation.html'
- Eine Form mit folgenden Komponenten:
- 3 Buttons: Btn_Verb; Btn_Trenn; Btn_Abfr => Palette Standard
- 1 Memo (Memo1) => Palette Standart
- 1 DBGrid (DBGrid1) => Palette Datensteuerung
- 1 DBNavigator => Palette Datensteuerung
- 2 DBEdit (DBEdit1; DBEdit2) => Palette Datensteuerung
- 1 Komponente ZConnection (ZConnection1) => Palette Zeos Access
- 1 Komponente ZQuery (ZQuery1) => Palette Zeos Access
- 1 Komponente DataSource (DataSource1) => Palette Datenzugriff
- Eine Datenbank im Internet (z.B. auf FreeSQL.org) und deren Zugangsdaten
Damit hätten wir alle Zutaten zusammen.
Als erstes müssen wir eine Prozedur schreiben, die die Abhängigkeiten zwischen den Komponenten regelt. Das muss man nicht über den Quelltext machen, aber so hat man auf einen Blick, was mit was verbunden ist.
Delphi-Quellcode:
procedure TForm1.LinkKomponents;
begin
with ZConnection1
do begin
Database := '
Datenbankname';
HostName := '
URL zu euerem Host, z.B. www.freesql.org';
Password := '
euer Passwort';
Port := 3306;
//Der Port auf dem die DB angesprochen wird, bei freesql.org 3306
Protocol := '
mysql';
User := '
Euer Username';
end;
ZQuery1.Connection := ZConnection1;
DataSource1.DataSet := ZQuery1;
DBNavigator1.DataSource := DataSource1;
DBGrid1.DataSource := DataSource1;
DBEdit1.DataSource := DataSource1;
DBEdit1.DataField := '
name';
DBEdit2.DataSource := DataSource1;
DBEdit2.DataField := '
nname';
end;
Somit haben wir die Komponenten miteinander verknüpft, und der Verbindung klargemacht, wie sie unseren
SQL-Server zu handhaben hat.
Nun packen wir das ganze in den FormCreate Teil:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
ZConnection1.Disconnect; //Sollte eine Verbindung offen sein, so wird sie geschlossen
LinkKomponents; //Hiermit werden die Komponenten verbunden
end;
Die restlichen Funktionen sind sehr einfach aufgebaut, weil die Komponente ZConnection alles für uns erledigt.
Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin
ZConnection1.Disconnect; //Falls man vergessen hat die Verbindung zu schließen wir sie hier nochmal geschlossen
end;
procedure TForm1.Btn_VerbClick(Sender: TObject);
begin
ZConnection1.Disconnect; //Falls die Verbindung noch/schon offen ist wird der Fehler
//vermieden, dass noch eine Verbindung offen ist
ZConnection1.Connect; //Herstellen der Verbindung
end;
procedure TForm1.Btn_TrennClick(Sender: TObject);
begin
ZConnection1.Disconnect; //Trennen der Verbindung
end;
procedure TForm1.Btn_AbfrClick(Sender: TObject);
begin
ZQuery1.SQL:= memo1.Lines; //Der Text der Abfrage steht in Memo1
ZQuery1.Open; //Die Abfrage wir 'freigegeben' => ausgeführt
end;
Bevor wir damit vernünftig arbeiten könne, brauchen wir erst mal eine Tabelle.
Wenn das Projekt kompiliert ist und läuft muss man folgendes machen:
In Memo1 eingeben:
Zitat:
CREATE TABLE namen (name varchar(30) NOT NULL, nname varchar(30), PRIMARY KEY (name));
Mit einem KLick auf Abfrage wird eine Tabelle mit dem Namen
namen erstellt, die zwei Spalten für Strings â 30 Zeichen hat.
name und
nname. Die Tabelle will nun mit Werten gefüllt werden. Das können wir ganz einfach machen, indem wir in das Memo nun eingeben:
Zitat:
SELECT * FROM namen
Damit wir die Tabelle geöffnet und wir können über das BDGrid oder die Textfelder Datensätze hinzufügen. (KLeiner Tip am Rande: Die Eigenschaft
'ShowHint' des DBNavigators auf
'true' setzen, dann hat man Tool-Tips zu den Buttons)
Über das Memo kann man nun alle Aktionen die
MYSQL zulässt durchführen und bekommt die Resultate im DBGrid angezeigt (und in den Edit-Feldern).
Damit Endet dieser Exkurs. Ich hoffe alles war verständlich und das ganze ist hilfreich. Zumindest hatte ich Probleme etwas vergleichbares wie das hier zu finden und ich glaube, ich bin nicht der Einzige. Über ein kleines bisschen Feedback würde ich mich freuen *g*
edit: Ich habe noch den Source für das Beispielprogramm als Zip angehangen