SQLDb

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

SQLDb

Beitrag von Christian »

Hallo,

hat sich schon mal jemand mit SQLDb auseinandergesetzt ?
Ich hab auch noch nicht soo die erfahrungen mit SQL Datenbanken und möchte aber das mein aktuelles Projekt damit arbeiten kann.
Anlegen der Tabellen funktioniert alles super aber ein Insert und das befüllen der Felder mit Fieldbyname() funktioniert nicht, ich habe das ganze auch in eine Transaktion geschachtelt und trotsdem stehen hinterher in den tabellen keine Daten :(

hat jemand ne idee ?

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Werde heute mal Firebird weiter testen

Beitrag von ralli »

Windows

Christian, ich habe nun Firebird 1.5 installiert. Eine erste Verbindung mit den SQLDb Kompos und eine Anzeige in einem DBGrid funktionierten einwandfrei. Schau mir heute mal an, ob sich Daten einfügen lassen.

Ralli

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

schön, villeicht kommst du ja weiter.
ich hab zusätzlich das problem das ichz alles im code erledige da ich noch eine abstraktionsschicht in meiner anwendung habe.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Daten einfügen mit Firebird

Beitrag von ralli »

Daten in DBGrid anzeigen:

IBConnection.Open;

Edit1.Text := 'select * from Hasbergen where Name = ''Duck''';

SQLQuery1.Close;

SQLQuery1.SQL.Clear;

SQLQuery1.SQL.Add(Edit1.Text);

SQLQuery1.Open;

IBConnection.Close;

Daten mit Insert einfügen:

IBConnection.Open;

Edit1.Text := 'insert into Hasbergen (Name) values (''Test'')';

SQLQuery1.Close;

SQLQuery1.SQL.Clear;

SQLQuery1.SQL.Add(Edit1.Text);

SQLQuery1.ExecSQL;

SQLTransaction1.Commit;

IBConnection.Close;

Achtung beim Insert Befehl muß beim Absetzen des SQL Statements die Methode der Query ExecSQL sein. Und bitte nicht vergessen, die Transaktion mit Commit auszuführen. Beim Select ist die Methode der Query immer Open.

Also bei mir funktioniert es einwandfrei. Im übrigen empfehle ich IbExpert zur Administration von Firebird, es gibt die Version auch als Personal, also für Privat frei unter http://www.hk-software.net/ibexpert.com ... 0-0-00.php

Ralli

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

kannst du mal probieren ob das ganze auch mit

SQLQuery1.Insert;
SQLQuery1.FieldByName('Name').AsString := 'Test';

geht ?

Im übrigen empfehle ich IbExpert zur Administration von Firebird, es gibt die Version auch als Personal, also für Privat frei unter http://www.hk-software.net/ibexpert.com ... 0-0-00.php
was bekommst du dafür :p und nebenbei ich benutze mysql
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

So funktioniert SQLQuery1 ohne pures SQL

Beitrag von ralli »

Hallo Christian,

also was bekommst Du dafür ? Diese Frage nehme ich nicht wirklich ernst. Meine Absicht war es, ein gutes kostenloses Programm für den privaten Einsatz weiter zu empfehlen. Ich bin mit dieser Firma nicht verwandt oder verschwägert und bekomme auch keine Tippgeberprovision.

Also so geht es:

SQLQuery1.Close;

SQLQuery1.Open;

SQLQuery1.Insert;

SQLQuery1.FieldByName('Name').AsString := 'Ralli';

SQLQuery1.Post;

Mal wieder die Methode Post vergessen, was ? Es ist zwar so einfacher, aber es lohnt sich doch SQL zu lernen oder anzuwenden, weil damit ein Standard verbunden ist. Es kann ja mal sein, das man den Datenbankserver wechselt. Das gelernte kannst Du dann weiter verwenden.

Ralli

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Getestet und es funktioniert

Beitrag von ralli »

Sorry, ja wenns schnell gehen muß, den vorherigen Post habe ich aus dem Kopf geschrieben. Diesen Code habe ich getestet, er funktioniert einwandfrei.

SQLQuery1.Close;

SQLQuery1.Open;

SQLQuery1.Insert;

SQLQuery1.FieldByName('Name').AsString := 'Ralli';

SQLQuery1.Post;

SQLQuery1.ApplyUpdates;

SQLTransaction1.Commit;

Ralli

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

ApplyUpdates habe ich bei mir nicht mal probiern ...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

ApplyUpdates funktioniert :)
Jetzt hab ich die nächste frage ich raff das mit master/detail bei sql irgendwie noc net ganz kannst mir dazu villeicht auch noch n beispiel geben :)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Das funktioniert bei SQL mit Join

Beitrag von ralli »

Sieh Dir mal folgende Seite an : http://www.aspheute.com/artikel/20001023.htm

Bin gerade selbst dabei, SQL mal aufzufrischen. Es gibt demnächst von mir den fbmaker, ein Administrationsprogramm für Firebird mit einer Beispieldatenbank und vielen SQL Scripten zum Erlernen der wichtigsten SQL Statements. Bis dahin also etwas Geduld, oder selbst ist der Mann.

Ralli

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

n join hat doch nix mit master/detail zu tun ?!
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: Das funktioniert bei SQL mit Join

Beitrag von knight »

ralli hat geschrieben:
Bin gerade selbst dabei, SQL mal aufzufrischen. Es gibt demnächst von mir den fbmaker, ein Administrationsprogramm für Firebird mit einer Beispieldatenbank und vielen SQL Scripten zum Erlernen der wichtigsten SQL Statements. Bis dahin also etwas Geduld, oder selbst ist der Mann.

Ralli


Hallo Ralli,

bevor du das Rad vielleicht zum zweiten Mal erfindest, wirf doch mal einen Blick auf http://www.flamerobin.org . Es gibt Versionen für Linux und Windows.

knight

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Quick and Dirty

Beitrag von ralli »

Lieber Christian,

ich bin nun bereits seit 32 Jahren in der IT Branche tätig und habe 1974 noch als Operateur mit Lochkarten gearbeitet. Davon 26 Jahre zusätzlich in der Erwachsenenbildung im IT Bereich. Laß Dir folgenden gutgemeinten Rat geben: Jedes Wissen sollte ein Fundament haben. Man kann es sich durch ehrliche und harte Arbeit erwerben. Ein Prozess von Jahren und nicht von last Minit. Eine Problemlösung ist nur möglich, wenn das Problem detailliert beschrieben wird. Desto mehr Zeit Du in die Beschreibung eines Problems investierst, desto besser können auch von Außenstehenden, hilfsbereiten Menschen Problemlösungsstrategien entworfen und angeboten werden. Wenn einfach nur Wortfetzen angeboten werden, die zudem zum Teil noch aus dem Zusammenhang gerissen sind, wird das ganze zum Ratespiel. Heute soll alles schnell gehen. Eben quick and dirty. Leider ist heute diese Art der Kommunikation in vielen Foren üblich. Sorry, dafür habe ich keine Begabung. Außerdem sind wir hier nicht bei Wünsch Dir was (eine frühere Fernsehsendung) oder bei Dalli Dalli (ebenfalls eine frühere Fernsehsendung). Und zu guter Letzt: Was glaubst Du wohl, wenn man sich so engagiert wie ich, wie gut dann mal ein kleines "Danke schön" ist ? Es ist eben nicht alles selbstverständlich. Denk mal in Gelassenheit und ohne Dich zu ärgern darüber nach.

Ein schönes Wochenende wünscht

Ralli

nach Diktat verreist

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Eigennutz

Beitrag von ralli »

Hallo knight,

vielen Dank für Deinen Tip. Habe mal den Quelltext inspiziert, um daraus zu lernen. Leider nur in C und das beherrsche ich nun mal überhaupt nicht. Das Rad neu erfinden ? Leider ist meine Vorgehensweise nicht so uneigennützig, denn durch jedes neue Projekt lerne ich dazu, weil ich gezwungen bin, mich mit den Dingen auseinanderzusetzen und in die Tiefe zu gehen. Das hat sich so für mich bewährt. Und wenn ich dann hinzugelernt und meinen Horizont erweitert habe, kommt das letztendens auch wieder anderen zu Gute. Zum Beispiel der Lazarus Gemeinde.

Ralli

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

OK ralli, ich weiss schon wovon du redest. Ich hab schliesslich z.Z. auch 4 Freeware Projekte laufen und danken tut einem heut zutage wirklich keiner was. Noch kurz zu meiner Person ich programmiere seit meinem 14. Lebensjahr angefangen hab ich 4 Jahre mit C dann folgten 2 Jahre mit C++. Danach bin ich bei einer Firma gelandet die Medizinische Software herstellt(e) die Leute dort haben doch tatsächlich mit TP 7.0 gearbeitet und Delphi 1.0.
Nachdem ich mir das ganze 2 Monate lang angeschaut habe und meine ersten kleinen Programme in TP 7.0 gebastelt habe war ich absoulut erschreckt wie strukturiert und doch produktiv doch Pascal sein kann. Das war dann der Anfang seit dem hab ich jede Delphi Version bis 7.0 mitgemacht danach bin ich auf Lazarus umgestiegen was ich jetzt seit 2 1/2 Jahren nutze. Ich bin in sachen Pascal also kein unbeschriebenes Blatt. Falls jemand mal probleme mit C oder Cpp hatkann ich auch ehlfen da ich auf Arbeit jeden tag mit Microcontroller Programmierung in C zu tun hab (leider unetrstützt der fpc ja noch kein avr ;)) Auch in Sachen Datenbanken hab ich schon einiges hinter mir allerdings hauptsächlich mit der BDE. Ich habe auch im netz schon recht viel gesucht zu dem Thema allerdings findet man recht wenig. Und SQL ist doch schon etwas anderes als mit TTable umzugehn. Views, das Select statement, Joins versteh ich ja noch alles ganz gut. Aber bei Master/Detail hörts langsam auf. Was ioch jetzt rausbekommen habe ist das man die DataSource des MAsters in der Detail Querry setzen muss. Und dann mir :feldname eine Select/where abfrage machen muss. Funktioniert noch nicht so ganz aber möglicherweise liegt das auch am Datenbanklayer. Deshalb habe ich hier gefragt. Möglicherweise hat sich ja schon jemand damit beschäftigt. Und ralli du musst nicht alles wissen und schon gar nicht essen ;)

Aber schön zu wissen das sich hier jemand vom "Alten Eisen" befindet. Ich hab zwar die Stanzkartenzeiten nicht mitgemacht aber mein Pascal Lehrer war auch jemand von diesem Schlag, ich mag diese Leute. Ich selbst vershe zwar nicht wahnsinnig viel von Novell und co. Aber ab der BDE Zeit hab ich alles mitgemacht.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten