![]() |
Paralleler Mehrfachzugriff auf SQl-Datenbank
Hallo
wieder mal ein Problem: Also ich habe bei meinem Programm SQL (localSQl) verwendet. Das Problem ist, dass mehrere Anwender im Netzwerk über ein gemeinsames Netzlaufwerk Zugriff auf die Datenbanken haben müssen. d.h. es kann passieren, dass 2 oder mehr Schreib- oder Lesezugriffe auf die Datenbank gleichzeitig erfolgen. Bei mir soll, wenn die Checkbox beim jeweiligen User aktiviert ist ein Feld in der Datenbank hochgezählt werden. Das Problem ist, dass das nicht funktioniert. Also wenn ein User auf absenden klickt kann kein anderer User was in die Datenbank schreiben. Ist es möglich, dass mehrere User gleichzeitig auf eine Datenbank zugreifen? Oder kann ich abfragen zur Laufzeit, ob der Schreibversuch gelungen ist. Dann könnte ich eine Schleife schreiben in der das Programm immer wieder versucht zu schreiben bis der Schreibversuch erfolgreich war. Ungefähr so:
Delphi-Quellcode:
Oder geht das mit localSQL gar nicht? Geht das denn mit MySQL, dass mehrere User gleichzeitig schreiben?
REPEAT BEGIN
Query1.ExecSQL; sleep(1000) //um die Datenbank nicht zu überfluten UNTIL "Schreibversuch erfolgreich" Schonmal Danke im Voraus Gruß bender251 |
Re: Paralleler Mehrfachzugriff auf SQl-Datenbank
Hallo,
in meiner LocalSQL-DB hab ich es so geregelt, das ich mir ein bestimmtes Feld nehme, und dort, wenn ich mit meinem Programm den entsprechenden Datensatz bearbeite, einen bestimmten Wert setze, z.B. UPDATE mydb SET inwork = 'ja' (oder ähnlich) Andersrum liest jedes Programm vor einem Schreibversuch genau dieses Feld aus, und kann so herausfinden, ob an dem Datensatz gerade gearbeitet wird. Hat der Anwender seine Arbeit am Datensatz beendet, wird das Feld "inwork" einfach wieder zurückgesetzt und somit der Datensatz freigegeben. Zugegeben, nicht sonderlich elegant und auch nicht die optimale Lösung, aber was besseres ist mir bisher nicht eingefallen. mfG |
Re: Paralleler Mehrfachzugriff auf SQl-Datenbank
HI,
also normalerweise ist ja gerade der Sinn eines SQl-Servers im Netzwerk mehrere User gleichzeitig den Zugriff auf die Datenbank zu gestatten. Nun werde ich aus der Fragestellung nicht schlau, was localSQL ist. Generell hat die Sprache SQL nicht viel damit zu tun, ob eine DB Netzwerkfähig ist oder nicht, sondern die Datenbank/Treiber an sich regeln das. Normale Desktop Datenbanken /Paradox/Acces/DBase waren ursprünglich (wie der Name schon sagt) lokale Datenbanken, die im allgemeinen nur von einem Benutzer benutzt wurden. Durch künstliche Erweiterung (Ragelocking/Recordlocking) sind auch diese DBs teilweise (mit z. T. großen Einschränkungen) Netzwerkfähig geworden. Wohingegen Datenbankserver (Software) wie Oracle/Informix/Interbase von Haus aus auf den Netzwerkbetrieb designed worden sind. Interbase z.B. läuft als eigenständiges Programm (Dienst) und kann somit lokale als auch Fernzugriffe parallel verarbeiten, so dass es sowohl als lokale Testumgebung als auch als Produktiver Datenbankserver ohne Änderung des Codes/Treibers funktioniert. Also SQL kann man mittlerweile mit jedem Datenbanksystem benutzen (auf jedenfall die DML). Die Frage des Multiuser Supports ist somit eher eine Frage des Datenbanksystems (Desktop/Server). Für genauere Ausagen benötige ich mehr Infos, was Ihr unter localSQL versteht. Gruß |
Re: Paralleler Mehrfachzugriff auf SQl-Datenbank
Zitat:
Zitat:
Zitat:
|
Re: Paralleler Mehrfachzugriff auf SQl-Datenbank
@Tyler: Danke für den Tipp..........hab seid ca 1,5 Stunden versucht MySQL zum laufen zu kriegen. Will irgendwie net. Weiß eh net welche Komponenten ich dann einsetzen müsste. Naja ich werds mal mit deinem Tipp versuchen. Das werd ich wohl gebacken kriegen, denke ich mal.
Gruß bender251 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz