SQLite upper bei Unicode

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Singlepin
Beiträge: 15
Registriert: Fr 28. Aug 2015, 17:00
OS, Lazarus, FPC: Ubuntu 24.04.1 LTS (L 3.6 FPC 3.2.2)
CPU-Target: 64Bit

SQLite upper bei Unicode

Beitrag von Singlepin »

z.B.

Code: Alles auswählen

select upper("ä")
liefert ä zurück.
Ich habe eine uncode.so und eine icu.so die das Problem lösen können.
Lade ich in den "DB Browser" diese Erweiterungen liefert

Code: Alles auswählen

upper("ä")
Ä zurück.
Benutze ich sqlite3 in der Konsole kann ich mit

Code: Alles auswählen

.load ./unicode.so
diese Erweiterung laden und upper arbeitet korrekt.
Bei

Code: Alles auswählen

.load ./icu.so
erhalte ich die Fehlermeldung "No such file or directory", OK da fehlt irgend was.
Nehme ich also die unicode.so.
Mein Proble ist nun diese Erweiterung in meine Lazarus-Anwendung zu bekommen.

Code: Alles auswählen

DataModule.ZConnection1.ExecuteDirect('SELECT load_extension("unicode.so")'); 
ergibt einen "SQL logic error" "not authorized".
Gebe ich diesen SQL-String in sqlite3 ein erhalte ich keine Fehlermeldung aber upper arbeitet dann nicht richtig.

Wie löse ich mein Problem?

Benutzeravatar
Zvoni
Beiträge: 363
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: SQLite upper bei Unicode

Beitrag von Zvoni »

Wie löse ich mein Problem?
Indem man die Dokumentation liest: https://www.sqlite.org/loadext.html
For security reasons, extension loading is turned off by default. In order to use either the C-language or SQL extension loading functions, one must first enable extension loading using the sqlite3_db_config(db,SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION,1,NULL) C-language API in your application.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Soner
Beiträge: 724
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: SQLite upper bei Unicode

Beitrag von Soner »

Versuch das, villeicht funktioniert es auch mit Sonderzeichen.

Bei Firebird muss man nur bei der Felddefinition "COLLATE UNICODE_CI" hinzufügen.

Benutzeravatar
Zvoni
Beiträge: 363
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: SQLite upper bei Unicode

Beitrag von Zvoni »

Soner hat geschrieben: Fr 5. Jul 2024, 12:51 Versuch das, villeicht funktioniert es auch mit Sonderzeichen.

Bei Firebird muss man nur bei der Felddefinition "COLLATE UNICODE_CI" hinzufügen.
Was hat eine Collation mit dem Problem von OP zu tun?
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Soner
Beiträge: 724
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: SQLite upper bei Unicode

Beitrag von Soner »

Zvoni hat geschrieben: Fr 5. Jul 2024, 12:55 was hat eine Collation mit dem Problem von OP zu tun?
Upper benutzt man bei der Suche.

Ich dachte, vielleicht vursucht er mit "select upper("ä")" zu testen ob Umwandlung gelingt.

Benutzeravatar
Zvoni
Beiträge: 363
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: SQLite upper bei Unicode

Beitrag von Zvoni »

Soner hat geschrieben: Fr 5. Jul 2024, 13:11
Zvoni hat geschrieben: Fr 5. Jul 2024, 12:55 was hat eine Collation mit dem Problem von OP zu tun?
Upper benutzt man bei der Suche.

Ich dachte, vielleicht vursucht er mit "select upper("ä")" zu testen ob Umwandlung gelingt.
Sein SELECT ist erstmal exakt das, was es ist: Eine Anforderung an die Datenbank-Tabelle, ein gewünschtes Resultat zu liefern, was in seinem Fall nicht funktioniert hat.
Selbstverständlich hast du Recht mit der Collation im Fall von Vergleich, Sortierung usw.
Aber bei OP gehts ja erstmal um die Ausgabe als solches.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Antworten