![]() |
Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Hallo,
Ich habe folgendes Phänomen: Im Installationsverzeichnis meiner App liegt auch eine SQLite - Datei. Nun versuche ich mich mit dieser zu Connecten. Allerdings funktioniert dies nur manchmal. die Anderen Male bekomme ich eine Zugriffsverletzung. Folgendes ist mir dabei noch aufgefallen. - Das erste Connect scheitert immer - Das zweite Connect scheitert selten - Ab dem dritten Connect ist kein Muster erkennbar - Nach einer Gewissen Zeit Stürzt die App einfach ab ohne eine Fehlermeldung. (Zufällige Zeit) Wenn da jemand einen Rat weiss wäre das Super! |
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Machst du soetwas beim Start ?
Das funktioniert für mich auf allen Plattformen. EDIT: Bei den Pfaden kann das natürlich in die Hose gehen wg. der Zugriffsrechte. Deshalb habe ich Alles unter TPath.GetDocumentsPath abgelet. Rollo
Delphi-Quellcode:
procedure TMeasuresDm.FDConnection1BeforeConnect(Sender: TObject);
var sFile: string; LStoragePath: TS4Storage_Path; begin sFile := ''; // Get Path+FileName LStoragePath := TS4Storage_Path.Create; try sFile := LStoragePath.FileIn_Documents_APP( CDb_Measure ); finally LStoragePath.Free; end; FDConnection1.Params.Database := sFile; end; procedure TMeasuresDm.FDConnection1AfterConnect(Sender: TObject); var sSQL: string; sFN: string; begin // // Initial creation, if not already in place, remove the CopyOnStart DB // //############### // Data Table //############### sSQL := 'CREATE TABLE IF NOT EXISTS ' + 'Measure (iId INTEGER PRIMARY KEY AUTOINCREMENT, ' + 'iType integer, ' + 'sText TEXT, ' + 'sDescr TEXT, ' + 'dRes REAL, dVal1 REAL, dVal2 REAL, dVal3 REAL, dCreated REAL, ' + 'sUnit TEXT)'; FDConnection1.ExecSQL( sSQL ); //'CREATE TABLE IF NOT EXISTS Kunden (Name VARCHAR(100))'); FDQueryMeasures.Active := True; if FDQueryMeasures.Active then begin ... ... ... end; end; |
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
das ist der Code, welchen ich derzeit bei Klick auf einen Button ausführe:
Delphi-Quellcode:
In der Connection ist als Provider "SQLite" ausgewählt und es existiert auch ein Entsprechender TSQLiteUniProvider.
UniConnection1.Close;
UniConnection1.Database := TPath.Combine(TPath.GetDocumentsPath, 'Test.sqlite'); UniConnection1.Connect; Was ich noch vergessen habe zu erwähnen ist vielleicht, das ich die Zugriffsverletzung nur bei der DB im App-Verzeichnis bekomme, nicht jedoch bei einer App, welche im nicht geschützten Bereich also beispielsweise im Downloadordner liegt. |
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Berechtigungsproblem. Ich vermute mit "App-Verzeichnis" meinst du "c:\Program Files\...". Hier hast du je nach Windows-Version nur Zugriff, wenn die Anwendung mit Admin-Rechten läuft. In diesen Verzeichnissen sollten deshalb keine Benutzer-Daten gespeichert werden.
|
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Ich bin auf android unterwegs... nicht auf Windows!
um genau zu sein Android 5.1.1 Auch funktionierte die App unter Android 4.2 noch einwandfrei. Die "Einzige" Änderung die Vorgenommen wurde ist, dass Android 5.1.1 installiert wurde. [Edit] zu meinem Letzten Post: ich meinte nicht app im nicht geschützten bereich, sondern Datenbank im nicht geschützten bereich [/Edit] |
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Liegt die DB dort irgendwo auf der SD-Karte oder wirklich im der App zugewiesenen Bereich? Ab Android 5 (bzw. 4.4?) haben Apps nämlich keinen beliebigen Schreibzugriff auf die SD-Karte mehr.
|
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
also die DB liegt im Installationsverzeichnis der APP, die DB wird direkt dort abgelegt bei der Installation (über die Bereitstellung). Es gibt auch keine Externe SD-Karte, sondern nur die Interne.
Der Connection wird folgender String als Database übergeben: /data/data/com.embarcadero.Project6/files/Test.sqlite |
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Also der Pfad TPath.GetDocuments sollte funktionieren, aber was ist UniConnection ?
Benutzt du UniDac für Android (ja sorry, steht schon bei dir im Header) ? Damit kenne ich mich nicht aus, aber versuch es doch mal mit FireDac, das läuft bei mir. Rollo |
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Die Problematik mit firedac in der app habe ich
![]() |
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Ich habe das Thema gerade nochmal in der Echten Anwendung probiert und hier funktioniert das Connect garnicht... und in der Testanwendung nur manchmal.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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