Autor Beitrag
Hänsel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Fr 16.10.20 20:43 
Hallo
kann mir hier jemand weiter helfen.
Ich habe eine SQLite Datenbank angelegt sowie auch eine Tabelle dazu. Als Komponente habe ich die FireDAC Komponente (FDConnection sowie FDQuery). Die Verbindung zur Datenbank und zur Tabelle war in Ordnung. Um Daten Sätze hinzu zufügen habe ich folgendes gemacht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
begin
    FDConnection1.Connected:=true;
    FDQuery1.Open;
    FDQuery1.Append;
    FDQuery1.Edit;
    zei:=StringListDatei[izeile];
    FDQuery1['Field1']:=22;
    FDQuery1['Field2']:=33;
    FDQuery1.Edit;
    FDQuery1.Post;
end;

Beim Programmstart kommt folgende Fehlermeldung:
ausblenden Quelltext
1:
[FireDAC][Phys][SQLite]ERROR:database is locked.					

Was habe ich hier vergessen bzw. falschgemacht? Ich babe zuvor mit ADO Komponenten gearbeitet, da funktionierte meine Vorgehensweise.

Hänsel

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt
Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 17.10.20 10:35 
Bei der Internet-Suche nach "[FireDAC][Phys][SQLite]ERROR:database is locked" kommen einige Links, u.a. Delphi Xe5 firedac Database locked error with SQLite database, d.h. probiere mal
ausblenden Delphi-Quelltext
1:
2:
connection.Params.Add('SharedCache=False');
connection.Params.Add('LockingMode=Normal');

(bzw. bei dir dann FDConnection1)
Hänsel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Sa 17.10.20 16:32 
Danke für den Hinweis. Aber die Fehlermeldung kommt nach wie vor.
Vielleicht kann noch jemand einen Hinweis geben wie ich mit einer SQLite umgehen kann. Um dort Daten einspielen zu können.

Hänsel
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 18.10.20 08:32 
Hast du FDConnection1 über den Designer als Komponente hinzugefügt?

Kann es sein, daß die Verbindung automatisch schon geöffnet wird (also Connected schon gesetzt ist)?
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1321
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Mo 19.10.20 15:44 
user profile iconHänsel hat folgendes geschrieben Zum zitierten Posting springen:
Hallo...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
begin
    FDConnection1.Connected:=true;
    FDQuery1.Open;
    FDQuery1.Append;
    FDQuery1.Edit;
    zei:=StringListDatei[izeile];
    FDQuery1['Field1']:=22;
    FDQuery1['Field2']:=33;
    FDQuery1.Edit;
    FDQuery1.Post;
end;


Sorry dass ich das so sagen muss, aber der Code ist der Hammer!
Vieleicht kommt der Fehler auch erst an einer der viel zu vielen Quelltextzeilen.

Zudem, verbindest Du überhaupt die Connection mit der Query?
Irgendwas wie FDQuery1.Connection := FDConnection1; gibt es? Oder im Designer?

Das reicht wenn die Connection schon gebunden ist:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
begin
    FDConnection1.Connected:=true;
    FDQuery1.Open;
    FDQuery1.Append; // Append: neue zeile; Edit macht nur Sinn wenn du vorher einen Datensatz ausgewählt hast. 
//    FDQuery1.Edit; // Beides zusammen mach dagegen keinen Sinn.
//    zei:=StringListDatei[izeile];
    FDQuery1['Field1']:=22;
    FDQuery1['Field2']:=33;
//    FDQuery1.Edit; // na, wohl eher auch nicht sinnvoll hier. Je nach DB knallt es hier wenn man nochmal versucht Editmode zu setzen.
    FDQuery1.Post;
end;

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Hänsel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Mo 19.10.20 19:15 
Hallo,
ich habe einige Sachen ausprobiert und festgestellt, dass ich über Connection-Komponente schon die Datenbank geöffnet habe. Während des Programmablaufes habe ich nochmals versucht (siehe Quelltext)die Datenbank zu öffnen. Daraus hat sich der Fehler ergeben. Dies kenne ich mit ADO Komponenten nicht.
Für die Hinweise besten Dank.

Hänsel