Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Gleichzeitiger Zugriff auf eine "nicht-echte-Datenbank"? (https://www.delphipraxis.net/22353-gleichzeitiger-zugriff-auf-eine-nicht-echte-datenbank.html)

Schnitzel 16. Mai 2004 14:44


Gleichzeitiger Zugriff auf eine "nicht-echte-Datenbank&
 
Hallo.
Ich habe mir jetzt ein paar Beiträge zum Thema Datenbanken angeschaut und habe da eine Frage:

Ist es möglich, dass ein Programm eine Datenbank benutzt und gleichzeitig ein anderes Programm auf die gleichen Daten zugreifen kann? Allerdings möchte ich von den großen und teuren Datenbanksystemen Abstand halten. (obwohl einfache SQL Abfragen schon ihren Reiz haben *schwärm* :))
Im Idealfall wäre ne Textdatei schon ausrechend...Nur da gibts halt das Zugriffsproblem.(oder gibts das nicht?)

Vielen Dank und schöne Grüße

Duffy 16. Mai 2004 14:47

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Hallo Schnitzel,
kleiner Tip von mir ...

Open Source Datenbank "MySQL"

bye
Claus

Sharky 16. Mai 2004 14:48

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Zitat:

Zitat von Schnitzel
...Im Idealfall wäre ne Textdatei schon ausrechend...Nur da gibts halt das Zugriffsproblem.(oder gibts das nicht?)...

Hai Schnitzel,

nur lesend würde es wohl gehen. Aber wenn mehrere Benutzer auch schreiben sollen bekommst Du probleme.
Was genau möchtest Du denn machen? Wie viele Datansätze wird es ca. geben?
Eventuell ist ein "einfacher" mySQL-Server die bessere Lösung für dich.

Schnitzel 16. Mai 2004 14:55

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
MySQL kostet leider bei kommerziellen Nutzung (ja, ich will :)) ... Geld
Das ist das, was ich tunlichst vermeiden wollte
Aber mySQL wäre ja soooooo schön *heul*

EDIT: Es werden nicht mehr als 500-1000 Einträge - vorraussichtlich auch 80% nur lesend - aber die 20% schreiben machen mir zu schaffen

EDIT2: Vielleicht kann ich das etwas streuen, wenn ich mehrere Dateien verwende...
Nebenbei: Gibts unter Windows sowas wie "file-lock" oder so - nicht dass es hier exceptions knallt ohne Ende - oder macht das nichts?

woki 16. Mai 2004 14:59

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Hi,

eine Alternative wäre da auch...

Firebird

Grüsse
Woki

Sharky 16. Mai 2004 15:01

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Zitat:

Zitat von Schnitzel
MySQL kostet leider bei kommerziellen Nutzung (ja, ich will :)) ... Geld...

Das stimmt. Aber die 450 Euro sind doch nicht viel wenn es der Firma hilft.

Schnitzel 16. Mai 2004 15:02

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Zitat:

Zitat von Sharky
Das stimmt. Aber die 450 Euro sind doch nicht viel wenn es der Firma hilft.

Was bekomme ich denn für 450 Euro für eine Lizenz? (Tschuldige, aber ich hab mich bei denen noch nicht umgesehen)

Sharky 16. Mai 2004 15:09

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Das Thema "Lizenz" ist bei mySQL zur Zeit schwer am brodeln.

hier

Hier noch ein Link zu den Lizenzbestimmungen.

Schnitzel 17. Mai 2004 17:39

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Ne, selbst "nur" 450 Euro bekomm ich nicht durch - für so einen "Kleinkram"

Aber mittlerweile wird mir ehrlichgesagt die Geschichte mit den Textdateien zu kompliziert :wiejetzt: - sind schon 5 verschiedene und redundante Daten ohne Ende...:kotz:
EDIT: Und bei gleichzeitigem Zugriff eklig langsam...

SQL - ich brauch irgendwas mit SQL - SQL ist ja so geil :bounce1:
Firebird hört sich da ganz interessant an, ist das wirklich auch für kommerzielle Sachen kostenfrei?

UND (das große und) - funktioniert der Zugriff auch über Perl ? - müsste nämlüsch :freak:
Hat da jemand Erfahrungen?

MrSpock 17. Mai 2004 22:06

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Hallo Schnitzel,

ja Firebird ist kostenlos! Auch für kommerzielle Anwendungen.

Für kleine DBs reicht eventuell auch Paradox. Ist bei Delphi dabei und darf auch verwendet werden. Bis 5 Nutzer sicher kein Problem.

Schnitzel 17. Mai 2004 22:18

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Hey, danke für die Info!
Da hab ich ja jetzt die Wahl :o)
Wichtig wäre mir dann halt, dass es eine gute Möglichkeit gibt, die Datenbank mit Perl zu benutzen...

BTW: Wegen den 5 Benutzern - ist das die lizenizelle (was ein Wort :)) oder die technische Grenze? (oder wird das Teil dann schneckenlahm?)

Viele Grüße

PS: Jetzt wird mir erst klar, wie bescheuert mein Nickname ist ;)

morbo 17. Mai 2004 23:44

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Zitat:

Zitat von Schnitzel
Hey, danke für die Info!
Da hab ich ja jetzt die Wahl :o)
Wichtig wäre mir dann halt, dass es eine gute Möglichkeit gibt, die Datenbank mit Perl zu benutzen...

BTW: Wegen den 5 Benutzern - ist das die lizenizelle (was ein Wort :)) oder die technische Grenze? (oder wird das Teil dann schneckenlahm?)

Viele Grüße

PS: Jetzt wird mir erst klar, wie bescheuert mein Nickname ist ;)


Hi,
für Perl ist vielleich http://www.postgresql.org/ besser.

Gruß

Marcel Gascoyne 18. Mai 2004 05:55

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Die Unterschiede zwischen Paradox und Firebird liegen im Grundkonzept. Paradox ist wie Access eine dateibasierte Datenbank, jeder Benutzer muß also physischen Zugriff auf die Datenbankdatei haben. Bei Firebird brauchst Du einen Datenbankserver und greifst über das Netzwerk auf diesen Server zu, wobei der Server natürlich auch auf dem Client mitlaufen kann.

Wenn Du nur Daten von wenigen MB verwalten möchtest wäre Firebird natürlich überdimensioniert. Aber im Mehrbenutzerbetrieb ist Firebird eigentlich die erste Wahl, da Du auch für kommerzielle Anwendungen keine teuren Lizenzen kaufen mußt.

In der Firma hab ich Firebird Datenbanken von einigen zig GB ohne Probleme am laufen und dort greifen bis zu 300 Benutzer gleichzeitig auf die Datenbank zu. Vorteilhaft ist natürlich auch das es Firebird nicht nur für Windows sondern auch für andere Betriebssysteme wie z.b. FreeBSD und Linux gibt.

Gruß,
Marcel

Schnitzel 18. Mai 2004 16:33

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Hey, danke - das ist echt gut zu wissen, wie die beiden im Prinzip funktionieren!

Hmm.. anfürsich würde so ein Paradoxes Ding reichen, aaaaaalerdings hab ich mir heute mal viele Texte zu Firebird durchgelesen und bin echt begeistert! Das ist ja ein Knaller-Ding und es gibt eine echt einfache Möglichkeit für einen Zugriff mit Perl.
Dummerweise scheint es kaum vernünftige (und kostenfreien) Möglichkeiten für den Zugriff mit Delphi zu geben *heul*...

Und ja, vielleicht wäre Firebird _etwas_ überdimensioniert, aber hey - was sollst - dat Ding ist kostenfrei und der Installationsaufwand ist echt nicht erwähnenswert (ich kenn den für PostgreSQL oder Paradox nicht) - warum sollte ich dann etwas nehmen, was weniger kann? -ausserdem finde ich für PostgreSQL grad mal überhaupt keine verwertbaren Infos (noch ein plus für Firebird)

Viele (von Firebird überzeugte - naja, bis auf die fehlende _kostenfreie_ Zugriffsmöglichkeit für Delphi) Grüße!

Marcel Gascoyne 18. Mai 2004 17:01

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Zitat:

Zitat von Schnitzel
Dummerweise scheint es kaum vernünftige (und kostenfreien) Möglichkeiten für den Zugriff mit Delphi zu geben *heul*...

Da gibt es genügend kostenfreie Möglichkeiten:

1.) DB-Express mit dem Interbase- oder UIB Treiber
2.) IBX
3.) Zeos (http://www.zeoslib.net
4.) UIB Komponenten (http://www.progdigy.com/UIB/)

Die UIB Komponenten sind auch bei der JEDI JVCL dabei.

Gruß,
Marcel

Schnitzel 18. Mai 2004 17:25

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Och ist das geil - ich bin ja total von den Socken!
Ich dachte bisher, die Zeos-Dinger sind _nur_ für MySQL - deshalb hab ich da garnix weitergeschaut...
Die anderen Teile werde ich mir wahrscheinlich nicht anschauen, da ich von Zeos eigentlich nur gute Sachen gehört habe...
Aber echt VIELEN VIELEN DANK!

Ich werde das morgen direkt mal ausprobieren und wenn das klappt, morgen Abend einen für euch alle mittrinken :o)

Schnitzel 18. Mai 2004 21:28

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Nagut - ich konnte nicht warten und habe hier mal testweise ne Serverinstallation von Firebird gemacht...
Nur verstehen tu ich das Prinzip nicht (http://www.firebird-datenbank.de/ ist leider dauer-down)

Da läuft der Dienst und wartet unter Port 3050 (oder so) auf Connections .. nur woher weiß der Dienst jetzt, wo welche Datenbank liegt und wie die heißt? (Das ganze Ding ist auch ziemlich dürftig dokumentiert)

Selbst lokal ist es mir noch nicht gelungen, auf eine Datenbank zuzugreifen (mit 3rd Party Tools)

Und die Komponenten von Zeos sind auch komisch Dokumentiert (ich soll die "ZCommonXXX and ZDbwareXXX packages" installieren, nur die gibt es nicht...)

Schnitzel 19. Mai 2004 19:06

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Ohje, ich war etwas zu voreilig... ist eigentlich ganz einfach ... also hier nochmal für die Nachwelt:

als Datenbank immer den server vorher mit angeben .. also "server:c:\db.fdb" .. sowas :)

Vielleicht hilfts jemandem

Jetzt schau ich mir die Komponenten an ...

Schnitzel 20. Mai 2004 11:02

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Da scheint es irgendein Problem mit den Zeos Komponenten zu geben:

Selbst das Beispiel stürzt ab (das dbc beispiel)

es kommt (nur nach ausführung eines sql statements) beim connection.close eine exception ...
"SQL Error: invalid statement handle. Error Code: -901. Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements"

Da das auch das Beispiel betrifft, bezweifele ich, dass ich da am Code etwas falsch gemacht habe.

BTW: Ich benutze die 6.1.5-stable Version.

Weiß jemand was da los ist?

Schnitzel 20. Mai 2004 19:20

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Ne, also mit den Beispielen kann ich echt nix anfangen .. kann mir jemand mit einem funktionsfähigen und einem einfachen (kein riesen kuddelmuddel) code helfen?

Domo Sokrat 19. Aug 2004 07:18

Re: Gleichzeitiger Zugriff auf eine "nicht-echte-Datenb
 
Hi Schnitzel!

Bissi spät, aber ich hoffe, Du bist noch an Hilfe interessiert... Ich arbeite momentan ebenfalls mit den ZEOS 6.1.5 stable (incl. Patch #1) und Firebird 1.5.1 (z. Z. embedded).

Dein Problem mit dieser Exception kenne ich. Bei mir wird sie ebenfalls beim Disconnect einer TZConnection ausgelöst. Und jetzt kommt's: Aber nur dann, wenn zuvor eine Stored Procedure mit ExecProc ausgeführt wurde, die keine Werte zurückgibt (z. B. die SP ADD_EMP_PROJ der Employee-Beispieldatenbank von IB/FB). Mit Stored Procedures, die Werte zurückliefern gibt's hier keine Probleme.

Nun hab' ich zwei Workarounds anzubieten:

1) Der "Elegante"
Führe StoredProcs, die keine Werte zurückliefern doch einfach in einem TZQuery über das EXECUTE PROCEDURE Statement aus (ExecSQL!) und vergiss für diesen Fall die Komponente TZStoredProc. Mit einem TZReadOnlyQuery müsste es auch klappen, hab's aber bis dato noch nicht probiert.

2) Der "Holzhammer"
Wenn die Datenbank nach Auftreten der Exception (Fehler -901) nochmals disconnectet wird, dann wird die Verbindung zur DB ohne Fehler gelöst. Man packt also das Disconnect in einen Try-Except-Block und führt beim Auftreten der Exception das Disconnect nochmals aus. Ich bin mit dieser Lösung zwar nicht ganz zufrieden, weil ich nicht weiß, was da in welchen falschen Hals kommt, aber es funzt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 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