AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

SQLite iOS <> SQLite Android!

Ein Thema von Mavarik · begonnen am 6. Dez 2013 · letzter Beitrag vom 3. Feb 2015
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: SQLite iOS <> SQLite Android!

  Alt 27. Dez 2013, 15:06
Bessere Idee? Ja.
Nach unserem Skype-Gespräch habe ich Dein Demo mit FireDAC nachgebaut und dort stimmen Theorie und Praxis auf Anhieb überein.
Und ich hab den Fehler gefunden:

Data.DbxSqlite.pas


Delphi-Quellcode:
var
  DatabaseName: string;
  ErrorCode: Integer;
begin
  if ConnectionProperties.Values['ColumnMetaDataSupported'] = 'then
{$IFDEF MSWINDOWS}
    ConnectionProperties.Values['ColumnMetaDataSupported'] := 'True';
{$ENDIF}
{$IFDEF MACOS}
    ConnectionProperties.Values['ColumnMetaDataSupported'] := 'False';
{$ENDIF}
  DatabaseName := FConnectionProperties.Values[TDBXPropertyNames.Database];
  try
    if string.Compare(FConnectionProperties.Values['FailIfMissing'], 'True', True) = 0 then
      ErrorCode := sqlite3_open_v2(MarshaledAString(Utf8Encode(DatabaseName)), FConnectionHandle, SQLITE_OPEN_READWRITE, nil)
    else
      ErrorCode := sqlite3_open16(PChar(DatabaseName), FConnectionHandle);
  except
    raise Exception.Create(SLibraryNotFound);
  end;
Wer findet den Fehler, warum es auf Android nicht funktioniert?

Für Andoid steht da:

Delphi-Quellcode:
var
  DatabaseName: string;
  ErrorCode: Integer;
begin
  if ConnectionProperties.Values['ColumnMetaDataSupported'] = 'then
    DatabaseName := FConnectionProperties.Values[TDBXPropertyNames.Database];
  try
    if string.Compare(FConnectionProperties.Values['FailIfMissing'], 'True', True) = 0 then
      ErrorCode := sqlite3_open_v2(MarshaledAString(Utf8Encode(DatabaseName)), FConnectionHandle, SQLITE_OPEN_READWRITE, nil)
    else
      ErrorCode := sqlite3_open16(PChar(DatabaseName), FConnectionHandle);
  except
    raise Exception.Create(SLibraryNotFound);
  end;
Was mir sagt NIEMAND, in Worten NIEMAND hat es bisher versucht eine SQLite Datenbank onthefly auf einem Android Device zu erzeugen... Erschreckend!

Bzw. Hatte zum Glück immer 'ColumnMetaDataSupported'] = '' gesetzt!

Mavarik

Geändert von Mavarik (27. Dez 2013 um 15:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: SQLite iOS <> SQLite Android!

  Alt 27. Dez 2013, 15:15
Weil bei Android der Code so compiliert wird
Delphi-Quellcode:
  if ConnectionProperties.Values['ColumnMetaDataSupported'] = 'then
    DatabaseName := FConnectionProperties.Values[TDBXPropertyNames.Database];
statt so (ob das besser ist?)
Delphi-Quellcode:
  if ConnectionProperties.Values['ColumnMetaDataSupported'] = 'then
  begin

  end;
  DatabaseName := FConnectionProperties.Values[TDBXPropertyNames.Database];
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: SQLite iOS <> SQLite Android!

  Alt 27. Dez 2013, 15:39
statt so (ob das besser ist?)
Delphi-Quellcode:
  if ConnectionProperties.Values['ColumnMetaDataSupported'] = 'then
  begin

  end;
  DatabaseName := FConnectionProperties.Values[TDBXPropertyNames.Database];
Der Kandidat hat 100 Punkte...

Tja wie ist es denn bei Android, wahrscheinlich wie bei iOS oder?

Keinen Plan...


Mavarik
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.261 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: SQLite iOS <> SQLite Android!

  Alt 27. Dez 2013, 16:54
man kann nie genug begins haben, aber dran denken alles braucht ein end (nur die Wurst hat zwei: end to end)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: SQLite iOS <> SQLite Android!

  Alt 27. Dez 2013, 19:16
Und ich hab den Fehler gefunden:

Data.DbxSqlite.pas
Erstellst du auch noch einen QC-Eintrag dazu?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: SQLite iOS <> SQLite Android!

  Alt 27. Dez 2013, 20:56
Und ich hab den Fehler gefunden:

Data.DbxSqlite.pas
Erstellst du auch noch einen QC-Eintrag dazu?
Logisch... 121404
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.261 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: SQLite iOS <> SQLite Android!

  Alt 27. Dez 2013, 21:08
[QUOTE=Mavarik;1241187]
Bessere Idee? Ja.

Was mir sagt NIEMAND, in Worten NIEMAND hat es bisher versucht eine SQLite Datenbank onthefly auf einem Android Device zu erzeugen... Erschreckend!

Mavarik
Da stimmt doch meine Schätzung (anderes Thema).

Weist Du auch, wenn man die Download zahlen bei den neuen nativen Androidcomponenten siehst (die wurden auch geblogt, auch hier mal war der Link zu sehen), da waren heute nachmittag nur 140 downloads. Ich war da schon mindesten 2 mal dabei.

Ich würde behaupten JEDER der ernsthaft hier was für Android macht mit XE5, hat die sich sicherlich schon mal angeschaut, ob man die vielleicht benutzen, oder was abschauen kann!

Das ist Weltweit, ja da weiste bescheid!

Geändert von arnof (27. Dez 2013 um 21:13 Uhr)
  Mit Zitat antworten Zitat
GS1200

Registriert seit: 16. Jul 2006
26 Beiträge
 
#8

AW: SQLite iOS <> SQLite Android!

  Alt 28. Dez 2013, 14:25
Hallo zusammen,

ich bin neu im Thema Mobile-Devices unter XE5 und habe statt iOS erst einmal mit meinem Galaxy S4 unter Android 4.2.2 angefangen meine ersten Erfahrungen zu sammeln.
Genau dieses o.a. Problem hatte ich auch und das Fixing der Data.DBXSqlite war die Lösung. Ich habe ewig die Ursache gesucht und den Fehler nur bei mir Code vermutet.

Ich wollte einfach mal danke sagen, an all diejenigen,die hier im Forum zu Lösungen beitragen.

Gruß

Axel
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: SQLite iOS <> SQLite Android!

  Alt 28. Dez 2013, 16:47
Hallo zusammen,

ich bin neu im Thema Mobile-Devices unter XE5 und habe statt iOS erst einmal mit meinem Galaxy S4 unter Android 4.2.2 angefangen meine ersten Erfahrungen zu sammeln.
Genau dieses o.a. Problem hatte ich auch und das Fixing der Data.DBXSqlite war die Lösung. Ich habe ewig die Ursache gesucht und den Fehler nur bei mir Code vermutet.

Ich wollte einfach mal danke sagen, an all diejenigen,die hier im Forum zu Lösungen beitragen.

Gruß

Axel
Jo ich habe fast 2 Monate in meinem Code den Fehler gesucht... Bis ich dann den Fehler mit dem Debugger gefunden habe...
  Mit Zitat antworten Zitat
schand99

Registriert seit: 7. Nov 2013
Ort: Südtirol
43 Beiträge
 
Delphi XE8 Enterprise
 
#10

AW: SQLite iOS <> SQLite Android!

  Alt 3. Feb 2015, 13:25
Hallo,

habe hier ein ähnliches Problem wie weiter oben beschrieben.
Mit dem Code erstelle ich eine SQLite Datenbank:

Delphi-Quellcode:
DataPfad:= TPath.Combine(TPath.GetDocumentsPath, 'Test.db');
if not TFile.Exists(DataPfad) then
  Begin
    Try // Datenbank erstellen
      SQLConnection.connected:=False;
      SQLConnection.Params.Values['Database'] := DataPfad;
      Startup.SQLConnection.Params.Values['FailIfMissing'] := 'False';
      Startup.SQLConnection.Connected:=True;
    except
      on E: EDatabaseError Do ShowMessage(E.Message);
    End;
    Try
      SQLBefehl:='CREATE TABLE Kontakte(EintragID INTEGER PRIMARY KEY AUTOINCREMENT, TelNummer VARCHAR(50) NOT NULL, KontaktName VARCHAR(100));';
      DtaZeilen := SQLConnection.ExecuteDirect(SQLBefehl);
    except
      on E: Exception Do Showmessage(E.ClassName + ' / ' + E.Message);
    End;
    SQLConnection.Connected:=False;
    if not FileExists(DataPfad) then
       ShowMessage('Datenbank nicht erstellt');
  end;
Wie Ihr sehen könnt, frage ich am Ende des Blockes ab, ob die Datei erstellt wurde. Sie wird erstellt, zumindest wird mir das mit FileExists angezeigt. Warum aber sehe ich die Datei nicht mit einem Dateiexplorer wie z.B. Astro-File Manager oder gar mit aSQLiteManager?

Wäre toll wenn mir jemand einen Hinweis geben könnte was ich da falsch mache

Geändert von mkinzler ( 3. Feb 2015 um 13:41 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 +1. Es ist jetzt 22:50 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