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 1 von 2  1 2      
QuickAndDirty

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

SQLite mit passwort -303 unsupported feature

  Alt 13. Nov 2023, 16:55
Datenbank: SQLite • Version: ? • Zugriff über: Firedac
Habe ein Projekt von Delphi XE11 nach XE 12 übernommen.
Nun folgende Laufzeitfehler.

Auf Android32 kann eine SQLite Connection nicht mehr mit dem einem gesetzten 'Password' parameter erstellt werden.
Es kommt die meldung -303 unsupported feature. "-303. Funktionalität wird nicht unterstützt"
Die Datenbank ist zudem zeitpunkt noch nicht erstellt!
Mit Leerstring als 'Password' und ohne 'Password' parameter geht es.

Außerdem funktioniert unter windows
dieser Code, compiliert mit Delphi XE 12, nicht auf einer mit mit Delphi XE 11 mit passwort erstellten SQLite datenbank .
Delphi-Quellcode:
    fFDSQLiteValidate := TFDSQLiteValidate.Create(nil);
    try
      fFDSQLiteValidate.Database := aDatabase;
      fFDSQLiteValidate.Password := FPassword;
      fFDSQLiteValidate.DriverLink := FPhysSQLiteDriverLink;
      fFDSQLiteValidate.MaxErrors := 10;
      fFDSQLiteValidate.Options := [voCheckIndexes];//[voCheckIndexes]= StandardCheck or [] = QuickCheck
      fFDSQLiteValidate.OnProgress := CheckOnlyProgressEvent;
      fFDSQLiteValidate.OnError := CheckOnlyErrorEvent;
      try
        Result := fFDSQLiteValidate.CheckOnly;
      Except
        On E:Exception do
        Begin
          Result := false;
          FLastCheckOnlyErrorMessage := e.Message;
          Tlog.d(FLastCheckOnlyErrorMessage);
        End;
      end;
    finally
      fFDSQLiteValidate.free;
    end;
Wenn fPassword gesetzt ist, kommt "-303 unsupported feature"
Wenn Fpassword leerstring ist , kommt "Error: file is not a database"

Ist das Phänomen bekannt und die Lösung auch?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (13. Nov 2023 um 16:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.039 Beiträge
 
Delphi 12 Athens
 
#2

AW: SQLite mit passwort -303 unsupported feature

  Alt 13. Nov 2023, 21:11
Versuch mal, irgendwo im Projekt die Unit FireDAC.Phys.SQLiteWrapper.FDEStat in die uses-Anweisung aufzunehmen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
QuickAndDirty

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

AW: SQLite mit passwort -303 unsupported feature

  Alt 14. Nov 2023, 09:08
Interessant.
jetzt geht es.
Kann man die magische passwort unit auch 2 mal unterbringen, damit die units die SQLite Passwörter verwenden in jedemfall funktionieren ?

Was hat sich da von XE11 auf XE12 geändert, dass ich diese unit jetzt brauche?
Edit:
Ok, also es ist einfache eine import unit für eine DynLib .
Mit Kompiler schaltern für dynamisches laden oder statisches linken.
War das was hier
FireDAC.Phys.SQLiteWrapper.FDEStat
drin ist früher in
FireDAC.Phys.SQLiteWrapper enthalten und jetzt nicht mehr?

Edit2:
FireDAC.Phys.SQLiteWrapper.FDEStat
FireDAC.Phys.SQLiteWrapper.Stat
Was ist der Unterschied?
ich habe voher FireDAC.Phys.SQLiteWrapper.Stat benutzt. Muss ich diese unit jetzt ausbauen?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (14. Nov 2023 um 09:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.039 Beiträge
 
Delphi 12 Athens
 
#4

AW: SQLite mit passwort -303 unsupported feature

  Alt 14. Nov 2023, 09:49
Die Unit FireDAC.Phys.SQLiteWrapper.FDEStat muss verwendet werden um das alte Encryption-Verfahren zu verwenden. Sie muss nach FireDAC.Phys.SQLiteWrapper.Stat stehen, damit die Default-Engine auf FDE geändert wird.

Wenn du sichergehen willst, platziere einen TPhysSWLiteDriverLink auf ein Form und setze das EngineLinkage Property auf slFDEStatic . Damit kann dir die Default-Engine egal sein.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
QuickAndDirty

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

AW: SQLite mit passwort -303 unsupported feature

  Alt 14. Nov 2023, 10:06
Danke.
Ich bin leicht schockiert weil ich diesen schrecklichen blog post fand. (Ich hab nur Delphi kein C++)
https://blogs.embarcadero.com/new-fi...or-sqlite-see/

Also der eigentliche Grund für das Gehampel ist, dass wir bei dem alten binary 'libsqlite.a', 'sqlite3_x86.obj' und 'libcgsqlite3.dylib' bleiben können ?
Weil die neuen Versionen dieser Dateien keine Encryption mehr unterstützen und Encryption jetzt ein Premium-Feature ist was man über einen SEETreiber nachkaufen muss?

Also Enshittyfication wie bei games?

Früher hat Firedac immer eine Login Meldung gebracht oder eine andere nervige Warnung, wenn man eine Datenbank mit leerem oder Ohne Password versucht hat zu connecten... deswegen hat die Datenbank ein Passwort.
Muss ich jetzt meine SQLite Datenbank, um zukunftsicher zu sein, von einer DB mit Passwort in eine ohne Passwort umwandeln? Und wird dann wieder eine Meldung kommen wenn die DB kein Passwort hat?

Edit: Auf Android geht es ohne passwort aber wie bekommt man Daten von der alten verschlüsselten DB in die Neue?
TFDBatchMove ??
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (14. Nov 2023 um 10:33 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

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

AW: SQLite mit passwort -303 unsupported feature

  Alt 15. Nov 2023, 15:58
Wenn ich beide Units verwende
Delphi-Quellcode:
uses
FireDac.Phys.SQLiteWrapper,
FireDAC.Phys.SQLiteWrapper.Stat, //diese
FireDAC.Phys.SQLiteWrapper.FDEStat; //und diese
bekomme ich beim linken für Android den fehler

Code:
[DCC Fehler] E2597 C:\Users\Public\Documents\Embarcadero\Studio\23.0\CatalogRepository\AndroidNDK-21-23.0.50491.5718\android-ndk-r21\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-ld.exe: error: c:\\program files (x86)\\embarcadero\\studio\\23.0\\lib\\Android\\Release/libsqlite_fde.a(sqlite3_fde.o): multiple definition of 'sqlite3_aggregate_context'
  C:\Users\Public\Documents\Embarcadero\Studio\23.0\CatalogRepository\AndroidNDK-21-23.0.50491.5718\android-ndk-r21\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-ld.exe: c:\\program files (x86)\\embarcadero\\studio\\23.0\\lib\\Android\\Release/libsqlite.a(sqlite3.o): previous definition here
  C:\Users\Public\Documents\Embarcadero\Studio\23.0\CatalogRepository\AndroidNDK-21-23.0.50491.5718\android-ndk-r21\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-ld.exe: error: c:\\program files (x86)\\embarcadero\\studio\\23.0\\lib\\Android\\Release/libsqlite_fde.a(sqlite3_fde.o): multiple definition of 'sqlite3_aggregate_count'
Also diesen fehler bekomme ich für so ziemlich jede Funktion in sqlite3_fde.o und sqlite3.o
Eine laaange list von Fehlern und dann den Linker Error
Code:
[DCC Fataler Fehler] F2588 Linker-Fehlercode: 1 ($00000001)

In windows geht es nur Android meckert.
Ich brauche beide , um Die Datebank zu konvertieren.
Muss ich den FDEStat import modifizieren?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
621 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: SQLite mit passwort -303 unsupported feature

  Alt 15. Nov 2023, 17:25
Also der eigentliche Grund für das Gehampel ist, dass wir bei dem alten binary 'libsqlite.a', 'sqlite3_x86.obj' und 'libcgsqlite3.dylib' bleiben können ?
Weil die neuen Versionen dieser Dateien keine Encryption mehr unterstützen und Encryption jetzt ein Premium-Feature ist was man über einen SEETreiber nachkaufen muss?

Das erfordert ein bisschen Ausdauer, aber das ist offensichtlich eine gute Methode um Steinreich zu werden:
- Bring eine Software für Lau auf den Markt
- Warte bis die Software "überall" verwendet wird
- Entferne ein wesentliches Feature der Software und verkaufe es gegen Lizenzen die so abartig teuer sind dass dich jeder dafür hasst.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Alt 16. Nov 2023, 11: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.889 Beiträge
 
Delphi 12 Athens
 
#9

AW: SQLite mit passwort -303 unsupported feature

  Alt 16. Nov 2023, 11: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 04:44 Uhr) Grund: SpamURL aus Zitat entfernt
  Mit Zitat antworten Zitat
QuickAndDirty

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

AW: SQLite mit passwort -303 unsupported feature

  Alt 16. Nov 2023, 12: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
Antwort Antwort
Seite 1 von 2  1 2      


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 19:00 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