Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

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

AW: SQLite iOS <> SQLite Android!

  Alt 27. Dez 2013, 16: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 16:18 Uhr)
  Mit Zitat antworten Zitat