AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Android findet meine DB nicht - [Firedac][Stan][Def]-254

Android findet meine DB nicht - [Firedac][Stan][Def]-254

Ein Thema von Anila · begonnen am 19. Okt 2019 · letzter Beitrag vom 19. Okt 2019
Antwort Antwort
Anila

Registriert seit: 15. Okt 2019
20 Beiträge
 
#1

Android findet meine DB nicht - [Firedac][Stan][Def]-254

  Alt 19. Okt 2019, 03:33
Hallo,

ich hoffe nochmals auf Eure Hilfe. Ich habe versucht, als erstes Projekt das hier
http://docwiki.appmethod.com/appmeth...OS_and_Android)
umzusetzen mit Delphi Tokyo. Mein Samsung Handy wird mittlerweile gefunden und ein simples "Hello World" habe ich immerhin auch geschafft.

Am obigen Projekt habe ich wenigen Änderungen vorgenommen:
- Meine Datenbank habe ich mit SQLiteStudio erstellt, sie hat aber die Extension *.sdb und heißt "Test.sdb". (Ich habe diese Shopping.s3db leider nicht).
- Sie liegt in einem anderen Verzeichnis als im obigen Tutorial. Das Verzeichnis habe ich in der Firedac Ini-Datei hinterlegt, der Firedac-Monitor findet sie auch.

Wenn ich für Windows kompiliere, sieht alles prima aus, die DB wird gefunden.

In BeforeConnect habe ich das CodeSchnipsel aus dem Tutorial eingebaut und den Datenbanknamen angepasst.

Im Deployment-Manager habe ich meine Datenbank hinzugefügt, der Remotepfad war "Assets\Internal\" - wie im Tutorial.

Ich gehe mal davon aus, dass "Deploy" die ganzen Dateien, also auch meine Datenbank auf das Handy kopiert hat?? Kann ich das irgendwie überprüfen? Ich bekomme weder beim Compilieren noch Deploy eine Fehlermeldung. Aber wenn ich dann F9 mache, kommt [Firedac][Stan][Def]-254 Definition [Test] is not found in [].

Irgendwie scheint meine Datenbank also gar nicht da zu sein, oder sie ist nicht da, wo sie erwartet wird, oder? Oder liegt es an der *.sdb Extension? Im SQLLite Studio habe ich Android aber ausgewählt.

Wenn ich einen Breakpoint in MainForm.Create setze oder in BeforeConnect, kommt obige Fehlermeldung bereits vorher.

Was ich auch ständig habe: Ich habe dann mal "Connected" auf false gesetzt - kompiliere - und bekomme dann ständig beim Compilieren den Fehler: "File not found: ....Main.fmx".
Die Datei ist da. Kann das ein Ressourcenproblem sein? Nach Neustart geht es dann wieder.

Viele Grüße
Anila
  Mit Zitat antworten Zitat
tggmx

Registriert seit: 29. Okt 2006
Ort: Würzburg
29 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Android findet meine DB nicht - [Firedac][Stan][Def]-254

  Alt 19. Okt 2019, 09:45
Wenn die Datenbank nicht vorhanden ist kannst sie mit SQL auch zur Laufzeit erzeugen ansonsten eben die fehlenden Tabellen/Felder ergänzen.
Dieses Verfahren ist wesentlich besser geeignet wenn du später Updates einspielen möchtest.
Tobias
  Mit Zitat antworten Zitat
Anila

Registriert seit: 15. Okt 2019
20 Beiträge
 
#3

AW: Android findet meine DB nicht - [Firedac][Stan][Def]-254

  Alt 19. Okt 2019, 15:34
Hallo,

meine Datenbank existiert auf dem Handy. Das habe ich abgefragt über FileExists(TPath.Combine(TPath.GetDocumentsPath, 'Test.sdb').

Debugging funktioniert jetzt auch und ich kann also sehen, dass in FDConnection1BeforeConnect der richtige Code aufgerufen wird:

FDConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, 'Test.sdb');

Der Fehler wird irgendwo in FireDAC.Comp.Client.pas erzeugt - den Source habe ich allerdings nicht. Ich habe keine Idee mehr. Wo könnte ich noch schauen?

Viele Grüße
Anila
  Mit Zitat antworten Zitat
Anila

Registriert seit: 15. Okt 2019
20 Beiträge
 
#4

AW: Android findet meine DB nicht - [Firedac][Stan][Def]-254

  Alt 19. Okt 2019, 19:46
Hallo,

ich habe es nach vielem Herumprobieren endlich geschafft und möchte jetzt kurz beschreiben, was ich falsch gemacht hatte. Vielleicht gibt es ja außer mir noch weitere Leute, die an dem obigen Tutorial scheitern:

Ich hatte zunächst eine persistent Datenbank erstellt: Die Datei FDConnectionsDef.ini habe ich editiert und habe dort analog zu dem, was es dort schon zu SQLite gab, meine "Test" Datenbank aufgenommen.

FDConnection1.ConnectionDefName habe ich auf meinen DB-Alias "Test" gesetzt. Damit konnte ich in Windows problemlos verbinden.

Für Android musste ich zur Designzeit FDConnection1.ConnectionDefName und FDConnection1.ConnectionName leer lassen. Der Code in FDConnection1.BeforeConnect sieht jetzt so aus:

FDConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, 'Test.sdb');
FDConnection1.Drivername :='SQLite';


Wenn ich den Drivername zur Designzeit gesetzt hatte und ansonsten ConnectionDefName und ConnectionName leer lasse, hatte ich auch eine Fehlermeldung bekommen, dass ich keine DriverID hätte. Daher setze ich den Drivername auch in BeforeConnect.

Ich hatte dann zunächst noch meinen ursprünglichen Fehler bekommen und festgestellt, dass ich in der FDQuery, die automatisch auf "Active=true" ging, ebenfalls die Verbindung über ConnectionDefName angesprochen hatte.

Offenbar muss man für Android eine temporäre Connection erstellen und das funktioniert jetzt.

Viele Grüße
Anila
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 08:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf