![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: TFDConnection
Database locked
Hallo,
aus Anwendung A auf dem Handy möchte ich aus einer Datenbank, die Anwendung B gehört, Werte auslesen. Beide Anwendungen laufen, beide greifen beim Start über eine TFDConnection auf ihre Datenbank zu und trennen erst bei Programmende wieder. Die Datenbankenb liegen für alle erreichbar im Handy unter öffentliche Documents. Die TFDQueries, die dann in der DB arbeiten, werden bei bedarf erzeugt, verbunden und danach wieder getrennt. Das ist der Istzustand. Nun ist Anwendung A bereits gestartet und hat intern die TFDConnection mit ihrer DB verbunden. Anwendung B startet und versucht, Grunddaten, die Anwendung A bereits hat, aus deren Datenbank zu übernehmen (z.B. Mailzugangsdaten um die nicht doppelt eintragen zu müssen). Hierbei kommt es nun zum Laufzeitfehler "database locked". Beende ich Anwendung A und starte Anwendung B allein, kann sie in der DB von Anwendung A lesen. Wo liegt mein Denkfehler im Ablauf und wie kann ich das besser lösen? Ciao Stefan |
AW: Database locked
Sobald eine Anwendung in eine SQlite-Datenbank schreibt wird diese exklusiv gesperrt.
|
AW: Database locked
Seit wann denn das?
Aber egal, Anwendung A ist zwar gestartet und die TFDConnection verbunden, aber sie lungert ohne Benutzeraktivitäten so vor sich her, aber es ist keine TFDQuery vorhanden und damit auch mit Sicherheit keine Schreibzugriffe! Trotzdem bekomme ich den locked - Fehler! Ciao Stefan |
AW: Database locked
Sind beide Apps mit dem gleichen Zertifikat signiert? ("By signing multiple APKs with the same certificate and using signature-based permissions checks, your apps can share code and data in a secure manner.",
![]() Ist ein Shared User in den Manifesten eingetragen? (In order to share data between apps (provided they are issued by the same publisher) you will need to specify a shared user id in the AndroidManifest.xml of both apps. - ![]() |
AW: Database locked
Ich muss zugeben, dass ich keine Ahnung habe, was die Zertifikate da beinhalten!
Beide Apps entstehen mit dem gleichen debug.keystore, welches ich auch auf Fest-PC und Notebook verwende für alle Apps. Muss ich da Änderungen in meiner Vorgehensweise machen? Ich befürchte, hier fehlen mit noch Grundlagenkenntnisse :-( Ciao Stefan |
AW: Database locked
Hi Stefan,
stellt sich aus Sicht der Sqlite DB als mehrere gleichzeitige Zugriffe dar. Hast Du die Verbindungsparameter vom ![]() Sonst für den Connection Parameter mal folgendes probieren
Delphi-Quellcode:
und für die FDConnection dann
SharedCache=False
LockingMode=Normal Synchronous=Normal
Delphi-Quellcode:
Lt. Wiki soll man auch den BusyTimeout hochsetzen, falls länger anhaltende Aktionen anstehen.
UpdateOptions.LockWait := True;
TxOptions.Isolation := xiSnapshot; // or xiSerializible. Nachtrag: Je nach Anforderung kann ggf. auch über eine persistente FDMemTable mit LocalSQL als Alternative zu Sqlite nachgedacht werden oder halt InterBase ToGo. VG Timo |
AW: Database locked
Hallo Timo,
das sind doch mal prima konkrete Ansätze, vielen Dank dafür! Mal sehen ob es was bringt... Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz