AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich

Ein Thema von Devil1925 · begonnen am 23. Mai 2016 · letzter Beitrag vom 21. Jun 2016
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#1

Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich

  Alt 23. Mai 2016, 16:41
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!
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.117 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich

  Alt 23. Mai 2016, 18:42
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;
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich

  Alt 24. Mai 2016, 08:31
das ist der Code, welchen ich derzeit bei Klick auf einen Button ausführe:

Delphi-Quellcode:
  UniConnection1.Close;
  UniConnection1.Database := TPath.Combine(TPath.GetDocumentsPath, 'Test.sqlite');
  UniConnection1.Connect;
In der Connection ist als Provider "SQLite" ausgewählt und es existiert auch ein Entsprechender TSQLiteUniProvider.

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.
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich

  Alt 24. Mai 2016, 09:59
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.
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich

  Alt 24. Mai 2016, 10:06
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]
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.

Geändert von Devil1925 (24. Mai 2016 um 10:39 Uhr)
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich

  Alt 24. Mai 2016, 11:06
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.
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich

  Alt 24. Mai 2016, 11:13
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
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.117 Beiträge
 
Delphi 12 Athens
 
#8

AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich

  Alt 24. Mai 2016, 17:54
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
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich

  Alt 24. Mai 2016, 20:38
Die Problematik mit firedac in der app habe ich hier ausführlich erklärt. Mit firedac funktioniert SQLITE aber dann kein mssql mehr...
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Delphi 10 Seattle Android 5.1 Unidac Connect SQLite nur manchmal erfolgreich

  Alt 25. Mai 2016, 08:57
Ich habe das Thema gerade nochmal in der Echten Anwendung probiert und hier funktioniert das Connect garnicht... und in der Testanwendung nur manchmal.
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz