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
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Anila · begonnen am 19. Okt 2019 · letzter Beitrag vom 15. Mär 2024
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
34 Beiträge
 
Delphi 10.4 Sydney
 
#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.
  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
BergLoewe

Registriert seit: 20. Nov 2005
37 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 14. Mär 2024, 18:29
Hallo,


ich habe das gleiche Problem. Wobei das mein erster Versuch mit einem Datenbankserver ist. Ich hatte lediglich vor 20-25 Jahren mal einiges auf Paradox-Ebene gemacht und dann 20 Jahre wenig bis nichts mit Delphi und erst recht nicht mit Datenbanken gemacht. Jetzt ist alles neue und im Gegensatz zu damals gibt's keine gescheiten Bücher mehr.

Ich habe unter VCL(also kein Android) eine Interbase-Datenbank eingebunden. Wenn ich im Datenexplorer Datenbank, User, Passwort usw. eingebe, funktioniert der Verbindungstest auch, ich kann im Datenexplorer die Datenbank auseinanderklappen, Tabellen ins Formular ziehen, alles soweit ganz nett.
Bis auf's Öffnen des Projektes und den Versuch, zur Laufzeit auf die Datenbank zuzugreifen. Da kommt genau die Fehlermeldung "[firedac][Stan][def]-254.definition fehlt in ..." würde in der FDconnectionDefs.ini fehlen. Was immer das für eine Definition sein soll. Zur Entwurfszeit muß ich dann immer wieder erst übder den Datenexplorer verbinden. Zur Laufzeit geht's gar nicht.

Ich habe nun den Tröt hier gelesen und in der Datenbank-Connection-Komponente DriverName, ConnectionDefName eingegeben und da läßt sich dann das Häkchen Connected setzen. Aber zur Laufzeit verbindet der das eben nicht, sondern kommt mit eben dieser Fehlermeldung.
Nun ist das Propertie ConnectionName leer. Ich wüßte -wenn's nicht leer sein darf- aber auch nicht, was genau da rein sollte.


Wie kommt man denn da jetzt weiter?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#6

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

  Alt 15. Mär 2024, 07:40
.. hast Du die FireDac.Stan.Def in den uses aufgeführt?

https://delphiprogrammingdiary.blogs...o-firedac.html

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
591 Beiträge
 
Delphi XE6 Enterprise
 
#7

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

  Alt 15. Mär 2024, 09:30
Jetzt ist alles neue und im Gegensatz zu damals gibt's keine gescheiten Bücher mehr.
Das FireDAC-Buch von Cary Jensen (https://learndelphi.org/de/delphi-in...y-cary-jensen/) ist durchaus empfehlenswert. In etwa 500 Seiten geht er in epischer Breite auf das Thema ein.
  Mit Zitat antworten Zitat
BergLoewe

Registriert seit: 20. Nov 2005
37 Beiträge
 
Delphi 11 Alexandria
 
#8

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

  Alt 15. Mär 2024, 16:21
Hallo,


besten Dank für die Hilfe! Das Buch werd ich mir mal bestellen.

Die FireDac-Unit war geladen.

Der Fehler ist jetzt weg, ich bin mir aber nicht klar drüber, warum eigentlich genau. Erstens hatte ich gestern abend dann eine Menge noch in der ini-Datei rumprobiert, ohne wirklichen Erfolg. Dann hab ich da drin alles gelöscht, was mit IB und meiner database zu tun hatte. Heute früh per IDE alles wieder eingerichtet und siehe da, kein Fehler mehr. Das Ding arbeitet, auch unter FMX ich krige die Daten in ein TGrid rein.
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:39 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