Hey,
nachdem ich das mit dem 'Select'-"Sachen" jetzt hinbekommen habe, möchte ich etwas in meine Datenbank schreiben, allerdings durchschau ich nicht wirklich, wie das bei DSQLite3 geht.
Ich hab verschiedene Ansätze ausprobiert und da ich noch am Anfang steh, seh ich eher so
also so aus
.
Also es geht darum, dass ich in einer Prozedur ein TDISQLite3UniDirQuery erstelle, darüber greif ich zuerst auf eine Datenbank zu und möchte später wieder mehrere Werte speichern.
Meine Ansätze waren folgende:
Delphi-Quellcode:
sql.InsertSQL :=
'
INSERT INTO tabelle2(wert1,wert2,wert3) VALUES (' + #39 +
(
sql.FieldByName('
wert1').AsString)
+ #39 + '
, ' + #39 + wert2 + #39 + '
, ' + #39 + wert3 +
#39 + '
);';
sql.Insert;
sql.Next;
(die verschiedenen Sachen heißen anders, die Namen sollen nur zur Verdeutlichung dienen)
Dabei bekomme ich bei "
sql.Next" die folgende Fehlermeldung (die auch auftritt, wenn da ein anderer Befehl wie
sql.Close steht)
Zitat:
Cannot modify a read-only dataset.
Das kann ich mir eigentlich nicht erklären, da weder die TDISQLite3UniDirQuery noch die Komponente, über die der Zugriff auf die Datenbank (TDISQLite3Database), eine read-only Eigenschaft besitzen. (im Admintool hab ich (bewusst) auch nichts dergleichen eingetragen)
Mein nächster Ansatz war, dass ich die TDISQLite3Database-Komponente benutze, die ich für den Zugriff auf die Datenbank sowieso benutze. Mein Ansatz sah so aus:
Delphi-Quellcode:
DISQlite3Database.Execute('
INSERT INTO tabelle2(wert1,wert2,wert3) VALUES (' + #39 +
(
sql.FieldByName('
wert1').AsString)
+ #39 + '
, ' + #39 + wert2 + #39 + '
, ' + #39 + wert3 +
#39 + '
);');
Dabei tritt die folgende Fehlermeldung auf:
Zitat:
SQLite3 Error 5 - database is locked.
Das kann ich mir auch nicht erklären, da ich nichts dergleichen veranlasst habe.
Ich hoffe, ihr könnt etwas mit meiner Beschreibung anfangen
Ich danke euch jedenfalls
Liebe Grüße.