AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQLite mit passwort -303 unsupported feature
Thema durchsuchen
Ansicht
Themen-Optionen

SQLite mit passwort -303 unsupported feature

Ein Thema von QuickAndDirty · begonnen am 13. Nov 2023 · letzter Beitrag vom 4. Jan 2024
Antwort Antwort
Seite 2 von 4     12 34      
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#11

AW: SQLite mit passwort -303 unsupported feature

  Alt 16. Nov 2023, 12:39
Wenn ich beide Units verwende
...
bekomme ich beim linken für Android den fehler
...
In windows geht es nur Android meckert.
Das steht so auch in der Doku:
Zitat:
For Android, Linux, and iOS platforms, only one static linkage unit may be included in a project simultaneously. In other words, you can use either FireDAC.Phys.SQLiteWrapper.Stat or FireDAC.Phys.SQLiteWrapper.FDEStat, but you cannot use both in the same project. If you do, the linker will generate errors because of duplicate symbols.
Ja natürlich aber welches ist das doppelte symbol?
Ist es in den libraries? Also darf ich generell nicht libraries einbinden in denen sich die namen überschneiden?
Oder ist das "SYMBOL" der delphi Functions name in den import units?

Weil dann könnte ich den import modifizieren und einen modifizierten wrapper erstellen und es würde gehen oder?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Alt 16. Nov 2023, 12:49     Erstellt von petroben
Dieser Beitrag wurde von TBx gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#12

AW: SQLite mit passwort -303 unsupported feature

  Alt 16. Nov 2023, 12:53
Es geht nicht um Emba. Ich kann verstehen wenn man sich da lieber an Funktionen hält die zuverlässig funktionieren. Es fällt sonst auf Emba zurück wenn der Kram nicht ordentlich geht.

Sqllite.org : SEE (Sqllite Encryption Extension) :
Product To Purchase: SEE Source Code License Only ($2000 USD)
Das meine ich!
Oder du verkaufst einen Oberklasse Wagen und dann müssen die Bonzen ein Abo abschleißen um sich den Popo wärmen zu lassen....hahahahaha
Oder du verkaufst ein Schiff von einem Luxusauto weit teurer als manchens Einfamilienhaus und dann muss der Käufer ein Abbo für vollständige Hinterradlenkung abschließen.
Oder du Programmierst ein Spiel aber alle models sehen langweilig und seelenlos aus und die Kinder müssen teure Skins kaufen um auf dem Schulhof nicht als "Default" gemobbt zu werden.

SQLite fühlt sich so ein bisschen wie MYSQL an oder wie der Tag als oracle Sun gekauft hat und das freie Java auf einmal unfrei wurde und Elison von SAP und Google kohle eingefordert hat.

Ich will einfach auf einer Installierten app durch ein einziges Update die Datenbank der App von Verschlüsselt auf Unverschlüsselt umstellen.
Also muss ich beide binaries haben. Eine zum umstellen, die andere um mit dem umsonst model auf der DB zu arbeiten. Für die Zukunftsfähigkeit.

Es ist so traurig, dass genau das wieder nicht funzt wo die programme in Sandboxes eingesperrt sind.

Muss ich jetzt die DB hochladen auf einen unsere Windows Server die dann umwandelt und wieder zurück auf das smartphone sendet? Das kann es doch nicht sein.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (16. Nov 2023 um 12:59 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#13

AW: SQLite mit passwort -303 unsupported feature

  Alt 16. Nov 2023, 12:59
It seems like you're encountering issues related to SQLite database connections and password handling in Delphi XE12. The error "-303 unsupported feature" suggests that there might be an issue with the password parameter.
[….SPAMURL…..]
For Android32, it appears that setting a password results in an unsupported feature error. Try using an empty string or omitting the password parameter to see if that resolves the issue on Android.

For the Windows issue, where you're getting an error related to the password, it might be worth checking if there are changes in how password-protected SQLite databases are handled between Delphi XE11 and XE12. Make sure the password handling is consistent with the version of SQLite you are using.
I know. We figured this out. Now we look for away around it. There are allready workarounds, but they are not nice enough to suit my spoiled ego .

As for monads, they are a concept from functional programming. In short, monads are a design pattern used to handle computations with side effects in a pure functional way. However, it seems unrelated to the specific issues you're facing in your Delphi project. If you have any more details or specific questions about the Delphi issues, feel free to provide more information.
That Monad question is a meme in my signature. As everybody knows, in a Nutshell,a monad is a monoid in the category of endofunctors. Obviously!
Andreas
Monads? Wtf are Monads?

Geändert von TBx (17. Nov 2023 um 05:44 Uhr) Grund: SpamURL aus Zitat entfernt
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#14

AW: SQLite mit passwort -303 unsupported feature

  Alt 16. Nov 2023, 13:08
So hätte die Konveriterung von "SQLITE gut" nach "SQLITE schlecht aber umsonst" aussehen können.
Delphi-Quellcode:
procedure TDbHealth.ConvertOldDBToNewDB(aDestpassword:String; aDestDBFilename:String= '');
var fFDSQLiteBackup:TFDSQLiteBackup;
begin
  TSync.DB_CS.Acquire;
  try
    FPhysSQLiteDriverLink.EngineLinkage := slFDEStatic;
    fFDSQLiteBackup := TFDSQLiteBackup.Create(nil);
    try
      fFDSQLiteBackup.Database := FDatabase;
      fFDSQLiteBackup.Password := FPassword;
      fFDSQLiteBackup.DriverLink := FPhysSQLiteDriverLink;
      fFDSQLiteBackup.DestDatabase := aDestDBFilename;
      fFDSQLiteBackup.DestPassword := aDestpassword;
      fFDSQLitebackup.WaitForLocks := true;
      fFDSQLiteBackup.DestMode := smCreate;// smCreate, smReadWrite, smReadOnly
      fFDSQLiteBackup.Backup;
    finally
      fFDSQLiteBackup.Free;
    end;
    FPhysSQLiteDriverLink.EngineLinkage := slDefault;
    tFile.Delete(FDatabase);
    FDatabase := aDestDBFilename;
    fPassword := aDestpassword;
  finally
    TSync.DB_CS.Release;
  end;
end;
Die Datenbank hätte danach einen Neuen Namen und ein neues passwort und die App könnte durchstarten und sich auf die Neue Passwortfreie unverschlüsselte SQLITE DB verbinden... und das funktioniert auch in Windows...

Ist die Frage ob man die Imports und Wrapper passend modifizieren kann, das der Linker die in Andoird und IOS mitnimmt.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#15

AW: SQLite mit passwort -303 unsupported feature

  Alt 10. Dez 2023, 15:08
Ich habe nun auch ein Windowsprogramm auf D12 umstellen wollen. Dann habe ich auch "-303xxx" bekommen. Daraufhin die o.g Unit eingebunden und schon lief das Progamm erst einmal. Dann wollte ich mir die Datenbank mit dem Programm "DB Browser for SQLite" anschauen. Da kam die Meldung, "Datenbankdatei konnte nicht geöffnet werden. Grund: file is not a database.
Zum Test habe ich dann das gleiche Programm unter D11 compiliert. Dann wieder versucht, die Daten mit dem DB Browser anzeigen zu lassen. Das ging dann auch nicht mehr.
Nun habe ich mir einmal eine ältere Datei angeschaut. Da konnte ich sehen, dass am Anfang der Datei "SQLite format 3" drinsteht bei den neu erzeugten Dateien kann ich keinen Text erkennen.
Was läuft da schief? Habe eigentlich am D11 nichts geändert und nun geht es da auch nicht mehr.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#16

AW: SQLite mit passwort -303 unsupported feature

  Alt 11. Dez 2023, 11:39
Ich führe diesen Code noch vor dem Backup und Reorg der Sqlite Datenbank, beim start der App aus. Damit geht es.
Es befreit die Alte datenbank von dem Passwort und neue Datenbanken haben ja eh keins.
Delphi-Quellcode:
Function TDBHealth.CheckAndRemoveEncryption:Boolean;
Begin
  Result := False;
  TSync.DB_CS.Acquire;
  try
    var SQLiteSec := TFDSQLiteSecurity.Create(nil);
    try
      SQLiteSec.Database := FDatabase;
      SQLiteSec.Password := '';
      SQLiteSec.DriverLink := FPhysSQLiteDriverLink;
      var EncryptionStatus := SQliteSec.CheckEncryption;
      if EncryptionStatus = '<unencrypted>then
      Begin
        Result := true;
        TLog.d('TDBHealth.CheckAndRemoveEncryption: DB is unencrypted');
      End
      else if EncryptionStatus = '<encrypted>then
      Begin
        TLog.d('TDBHealth.CheckAndRemoveEncryption: Encrypted DB or corrupt file');
        TLog.d('TDBHealth.CheckAndRemoveEncryption: Check old DB-password start');
        SQLiteSec.Database := FDatabase;
        SQLiteSec.Password := TDBConstants.DBPASSWORD_OLD;
        EncryptionStatus := SQLiteSec.CheckEncryption;
        TLog.d('TDBHealth.CheckAndRemoveEncryption: Check old DB-password finish');
        if (EncryptionStatus <> '<unencrypted>') and
           (EncryptionStatus <> '<encrypted>') and
           (EncryptionStatus <> '') then
        Begin
          TLog.d('TDBHealth.CheckAndRemoveEncryption: DB is encrypted with old DB-password');
          TLog.d('TDBHealth.CheckAndRemoveEncryption: Decrypt DB start');
          try
            SQLiteSec.Database := FDatabase;
            SQLiteSec.Password := TDBConstants.DBPASSWORD_OLD;
            SQLiteSec.RemovePassword;
            Result := True;
          Except
            On E:Exception do
            Begin
              fCheckDBhealthError := 'Beim entschlüsseln der Datenbank ist folgender Fehler aufgetretetn:' +
                                     sLinebreak + e.message + slinebreak+
                                     'Die Datenbank ist vermutlich defekt.'  ;
             TLog.d('TDBHealth.CheckAndRemoveEncryption: Decrypt DB Error:' + e.message);
            End;
          end;
          TLog.d('TDBHealth.CheckAndRemoveEncryption: Decrypt DB finish');
        End
        else
        Begin
          //Fehler;
          fCheckDBhealthError := 'Beim Login in die SQLite Datenbank ist folgender Fehler aufgetretetn:' +
                                  sLinebreak + EncryptionStatus + slinebreak+
                                 'Die Datenbank ist vermutlich defekt.' ;
          TLog.d('TDBHealth.CheckAndRemoveEncryption: Error checking for encryption with old password returned:'+EncryptionStatus);
        End;
      End
      else if EncryptionStatus = 'then
      Begin
        //Fehler;// Sollte man es dann nochmal mit passwort versuchen?
        fCheckDBhealthError := 'Unknown error checking for unencrypted access. The DB is probably corrupt.';
        TLog.d('TDBHealth.CheckAndRemoveEncryption: Unknown error checking for unencrypted access. The DB is probably corrupt.');
      End;
    finally
      SQLiteSec.Free;
    end;
  finally
    TSync.DB_CS.Release;
  end;
End;
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#17

AW: SQLite mit passwort -303 unsupported feature

  Alt 11. Dez 2023, 13:57
Hallo Andreas,

danke für die Funktion. Das klappt erst einmal in einem Beispielprojekt und wäre eine Möglichkeit, dies in mein Projekt einzubauen. Bei neuen Projekten lösche ich einfach das Passwort. Dann geht es unter Windows.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
FreddyH

Registriert seit: 16. Jan 2011
Ort: Malchow
16 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: SQLite mit passwort -303 unsupported feature

  Alt 16. Dez 2023, 09:36
Guten Morgen.

Ich habe leider das selbe Problem wir Ihr, nur habe ich noch eine Verständnisfrage:

Warum kann ich das Passwort beim App-Start löschen und
wenn ich das später machen möchte geht es nicht mehr.

Kann mir da jemand eine Antwort geben?
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#19

AW: SQLite mit passwort -303 unsupported feature

  Alt 17. Dez 2023, 10:01
Soweit wie ich das verstanden habe, kann das neue Delphi keine kostenlose Verschlüsselung mehr. Daher habe ich beim Anlegen einer Datenbank das Passwort ='' gesetzt. Damit funktioniert es bei mir.
Bei einer Datenbank mit Passwort habe ich die Funktion weiter oben genutzt. Damit konnte ich dann auch weiterarbeiten.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
FreddyH

Registriert seit: 16. Jan 2011
Ort: Malchow
16 Beiträge
 
Delphi 10.4 Sydney
 
#20

AW: SQLite mit passwort -303 unsupported feature

  Alt 18. Dez 2023, 11:51
1000 Dank an Euch.
Ihr habt mir Weihnachten gerettet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 13:21 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