![]() |
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.
|
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Kann es eventuell sein, dass meine App noch zusätzliche Rechte benötigt, welche ich eventuell noch nicht beachtet und deshalb noch nicht vergeben habe?
|
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
In der Debug-Version sind ja normalerweise alle Berechtigungen gesetzt. Funktioniert es denn damit?
|
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
In der Debug Version stürzt die App einfach ohne jegliche Meldungen ab.
|
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Dafür kann es 1000 Gründe geben.
Z.B. ![]() Kannst du mit den RadDemos arbeiten ohne Absturz ? Vielleicht am Besten von da weitermachen und aufbauen. Ich hatte auch Probleme beim Wechsel der App von Rx10 nach Rx10.1, da hat dann geholfen das Ganze Projekt neu zusdammenzubauen. Manche XML und PROJ Files werden dann neu angelegt und neu gesetzt. Das habe ich schon öfters mal gemacht, und hat das ein oder andere Mal geholfen. Rollo |
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Zitat:
Wenn du ein gerootetes Android-Gerät hast, kannst du dir mit Catlog ( ![]() |
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
|
AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Da ich inzwischen die Lösung gefunden habe möchte ich diese natürlich auch mit euch Teilen:
Es lag an der uniDAC Komponente. Diese Aktion funktioniert nun mit der Neuen Komponente (Version 6.3.12) einwandfrei, allerdings ist hier zu beachten, dass es in dieser Version nicht möglich ist von einer Android Anwendung in eine MSSQL - Datenbank zu schreiben, was allerdings in der nächsten Version behoben werden soll. Siehe hier: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:55 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