Derzeit versuche ich aus einem 2. Thread heraus eine tabelle zu einer SQLite Datenbank hinzuzufügen.
Aus irgendeinem Grund klappt dies nicht.
Ich nutze zum Zugriff auf die SQLite treiber und die Datenbank nicht die Lazaruseigenen Komponenten, sondern den Simple Delphi Wrapper von Tim: http://www.itwriting.com/blog/?page_id=659" onclick="window.open(this.href);return false;
Dies liegt v.a. daran, dass das Projekt von Delphi 7PE auf Lazarus umzieht.
Mein Problem ist, dass sich der Thread, in dem auch die Tabelle erstellt werden soll, an eben dieser Stelle aufhängt:
Code: Alles auswählen
if not smbdb.TableExists(pcregname) then //pcregname & adddir_SQL sind global definierte string-Variablen
begin
adddir_SQL := 'CREATE TABLE '+pcregname+' ([Pfad] TEXT,';
adddir_SQL := adddir_SQL+'[Titel] VARCHAR (255),[Interpret] VARCHAR (255),[Dauer] VARCHAR (25),';
adddir_SQL := adddir_SQL+'UNIQUE(Pfad));';
smbdb.ExecSQL(adddir_SQL); //Fehler.... Synchronize einbauen --> Hilft nicht?!?
end;
Wie ihr aus dem Kommentar entnehmen könnt, hat es nicht geholfen, den Aufruf mit einer Procedure als Synchronize aufzurufen.
Der selbe Code klappt innerhalb des Hauptthreads problemlos.
Dass ich, weil die DB woanders versehentlich auch gerade verwendet wird (sie ist aus dem Hauptthread genauso erreichbar) kann ich glaube ich ausschließen, da ja die Frage nach der Tabellenexistenz am Anfang des Threads zu klappen scheint...
Vielleicht hab ich ja irgendwas übersehen und ihr findet eine Lösung..
Unter Delphi und WinXP hat das ganze funktioniert, jetzt soll es eben mit Lazarus und Ubuntu 10.10 auch laufen^^
Ich bitte um Unterstützung.
Vielen Dank,
Euer SiMoeBoe
PS: Ich erhalte keine Fehlermeldungen! Allerdings habe ich auch nur Zugriff auf Fehler, welches mir das Terminal ausgibt, da das Programm aus Lazarus selbst heraus nicht Startbar ist, da ich zwangsweise eine start.sh verwenden muss. Ich kann kompilieren, nicht jedoch den Debugger verwenden.