AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Paralleler Mehrfachzugriff auf SQl-Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Paralleler Mehrfachzugriff auf SQl-Datenbank

Ein Thema von bender251 · begonnen am 13. Okt 2003 · letzter Beitrag vom 13. Okt 2003
Antwort Antwort
bender251

Registriert seit: 11. Okt 2003
32 Beiträge
 
#1

Paralleler Mehrfachzugriff auf SQl-Datenbank

  Alt 13. Okt 2003, 12:36
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:
REPEAT BEGIN
  Query1.ExecSQL;
  sleep(1000) //um die Datenbank nicht zu überfluten
UNTIL "Schreibversuch erfolgreich"
Oder geht das mit localSQL gar nicht? Geht das denn mit MySQL, dass mehrere User gleichzeitig schreiben?

Schonmal Danke im Voraus
Gruß bender251
  Mit Zitat antworten Zitat
Benutzerbild von Tyler
Tyler

Registriert seit: 19. Jun 2003
Ort: Berlin
241 Beiträge
 
#2

Re: Paralleler Mehrfachzugriff auf SQl-Datenbank

  Alt 13. Okt 2003, 12:48
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
  Mit Zitat antworten Zitat
Honie

Registriert seit: 27. Sep 2003
Ort: Bielefeld
39 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Paralleler Mehrfachzugriff auf SQl-Datenbank

  Alt 13. Okt 2003, 14:18
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ß
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Paralleler Mehrfachzugriff auf SQl-Datenbank

  Alt 13. Okt 2003, 14:42
Zitat von Honie:
Nun werde ich aus der Fragestellung nicht schlau, was localSQL
ist.
Zitat:
Was ist Local SQL?

Local SQL ist die Untermenge der Spezifikation SQL-92, die für den Zugriff auf dBASE-, Paradox- und FoxPro-Tabellen verwendet wird. Beim Empfang von Local SQL-Anweisungen aus Front-end-Anwendungen übersetzt die Borland Database Engine (BDE) die Anweisungen in BDE-API-Funktionen.
Schau ins BDE-Verzeichnis.

Zitat:
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:
Informier dich mal über Transaktionen.
  Mit Zitat antworten Zitat
bender251

Registriert seit: 11. Okt 2003
32 Beiträge
 
#5

Re: Paralleler Mehrfachzugriff auf SQl-Datenbank

  Alt 13. Okt 2003, 19:19
@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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:08 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