Autor Beitrag
Ulrich Michalik
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 08.11.02 16:33 
Hallo ich habe eine Frage zur Zugriffstechniken mit dbExpress auf eine MySQL- Datenbank

Betriebssystem SUSE Linux 8.0
Programmiersoftware Kylix2
Zugriff auf MySQL Datenbank mit dbExpress

Habe folgendes Problem:
Verschiedene Programme greifen teilweise zu gleichen Zeiten auf eine Tabelle zu
und f¸hren Updates unterschiedlicher Datens‰tze durch.
In einem Intervall liest ein anderes Programm die komplette Tabelle (alle Datens‰tze) mit einem SQL- Befehl 'SELECT' aus.
Dieses kann sich mit den Updates ¸berschneiden.
Dabei kommt es offensichtlich zu einem Konflikt, bzw. die Datenbank ger‰t in einen Timeout.
Weder der SELECT- BEfehl kann ausgef¸hrt werden noch der UPDATE- Befehl. BEide Programme warten bis der Timeout ausgelˆst wird.
Das kommt mir etwas seltsam vor da ich eigendlich erwarte das nicht die komplette Tabelle bei einem Zugriff gesperrt wird.
Ich kenne die Zugriffsoptionen unter ADO, wie z.B 'lockoptimistic, lockpessimistic usw. mit denen die Tabellen unterschiedlich im
Lesemodus oder schreibmodus geˆffnet werden. Gibt es so eine Einstellung auch unter dbExpress?
Was mach ich falsch?
Hier die Source Beispiele wie ich beim Lesen und Schreiben auf die Datenbank zugreife:

Schreiben in die Tablelle:
SQLConnection1.Execute('UPDATE Tabelle SET Feld1 = 1, Feld2 =2',NIL);

Lesen aus der Tabelle:

RS:TSQLDataSet;

RS.Close;

RS.SQLConnection := SQLConnection1;
RS.CommandType := ctQuery;


RS.CommandText := 'SELECT * FROM Tabelle;

RS.Open;

RS.First;


Ich benutze keine visuellen Datenbankkomponenten, Es handelt sich um ledigliche Konsolenapplikationen.

Danke im Vorraus f¸r Eure Hilfe.

Grufl Ulrich Michalik

_________________
Neueinsteiger in Linux und Kylix