PBOSL - SQLite3

Für allgemeine Fragen zur Programmierung mit PureBasic.
drahneir
Beiträge: 13
Registriert: 09.08.2006 12:56

PBOSL - SQLite3

Beitrag von drahneir »

Hallo,

habe kürzlich die neueste Version von PBOSL heruntergeladen. Danach habe ich festgestellt, dass sich ein Fehler eingestellt hat.
In meiner Anwendung wird ein String aus einer SQLite-Datenbank in einem Editor-Gadget angezeigt. Jetzt stoppt die Ausgabe bei einem "ü".
Nachdem ich wieder die alte SQLite-Userlib installiet habe, läuft alles wieder normal.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PBOSL - SQLite3

Beitrag von Kiffi »

drahneir hat geschrieben:Jetzt stoppt die Ausgabe bei einem "ü".
<Vermutung>
vielleicht ein Fehler im Zusammenhang mit Unicode.
</Vermutung>

Ich empfehle Dir, auf das SQLite-Include von Thomas/MLK
umzusteigen, da ich die PBOSL-Version nicht mehr weiter
entwickeln werde.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

SQLite von PBOSL und auch die Include nutzen seit geraumer Zeit UTF-8, so
wie es für SQLite vorgesehen ist. In älteren Versionen wurde dies nicht be-
rücksichtigt, da: PB vor 4 kein UTF-8 konnte. Die Umstellung erforlgte aber
leider nicht unmittelbar nach erscheinen von PB4. Alte Datenbanken sind
nicht ohne Konvertierung zu nutzen. Bei Neu erstellten sollte es keine
Probleme geben.

Zwecks Konvertierung, ab hier mal lesen:
http://www.purebasic.fr/english/viewtop ... 784#196784

Habs mal verschoben. Fragen zu PBOSL hier:
http://www.purebasic.fr/german/viewtopic.php?t=5062
oder in Anfänger/Allgemein einordnen, aber nicht als neues Feedback :mrgreen:
Zuletzt geändert von ts-soft am 26.06.2007 16:49, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Thorsten1867
Beiträge: 1360
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: PBOSL - SQLite3

Beitrag von Thorsten1867 »

drahneir hat geschrieben:... Jetzt stoppt die Ausgabe bei einem "ü".
Nachdem ich wieder die alte SQLite-Userlib installiet habe, läuft alles wieder normal. ...
Ich hatte das gleiche Problem. Es tritt bei beiden SQLite-Include bzw. Lib auf und zwar wenn man eine "alte" (=ASCII) Datenbank verwendet. Wenn man die Datenbank neu erstellt oder konvertiert nach Unicode, da funktioniert es.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
drahneir
Beiträge: 13
Registriert: 09.08.2006 12:56

Beitrag von drahneir »

Meine Datenbank ist UTF-8 codiert.
Ich habe es noch mal ausprobiert: mit der alten SQLite3 Lib läuft es, verwende ich die vom 20.02.2007, dann bricht die Ausgabe bei "ü" ab.
Da meine Anwendung auf die Datenbank aufsetzt und demzufolge sehr viele SQLite3-Befehle im Code stehen, wäre es ein ziemlich großer Aufwand, diese für eine andere Lib bzw. Include abzuändern. Ich werde also die alte Lib weiterbenutzen.
Vielen Dank für die Hilfe.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Ich werde also die alte Lib weiterbenutzen.
Sollte die beste Lösung sein, andere Änderungen gabs wohl nicht.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
drahneir
Beiträge: 13
Registriert: 09.08.2006 12:56

Beitrag von drahneir »

Eins verstehe ich bei diesem Problem nicht.
Ich habe mir den Code von SQLite3 mal angesehen, in den Prozeduren, die für das Holen von Daten aus der Datenbank zuständig sind, steht folgender Code:

Code: Alles auswählen

PokeS(@sSQLQuery_U, sSQLQuery, #PB_Any, #PB_UTF8)
Wenn ich #PB_Any und #PB_UTF8 da herausnehme oder #PB_Ascii einsetze, dann werden die Umlaute angezeigt.
Wenn ich meine Datenbank mit 'PRAGMA encoding' abfrage, erhalte ich den Rückgabewert 'UTF-8'. Also sollte beides zusammen doch funktionieren; tut es aber nicht.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Darum gehts doch, UTF-8 ist das korrekte Format für SQLite, nicht ASCII,
bzw. ANSI. Alle Umlaute liegen aber in UTF-8 und ANSI anders, deswegen
gehts nicht mehr. Wenn die DB neu erstellt wird, gibts diesen Fehler nicht,
da ja nicht nur UTF-8 gepoked wird, sondern auch gepeeked :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
drahneir
Beiträge: 13
Registriert: 09.08.2006 12:56

Beitrag von drahneir »

Habe jetzt die Datenbank konvertiert, d. h. alle Daten ausgelesen und UTF-8-kodiert wieder reingeschrieben. Hat aber nichts gebracht, im Gegenteil.
Wenn ich mir die Daten mit SQLiteExpert ansehe, dann ist ein String, der mit einem Umlaut anfängt, jetzt leer. "Österreich" ist also überhaupt nicht da, "Weißrussland" erscheint als "Wei".
Woran kann das denn nun liegen?
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

drahneir hat geschrieben:Habe jetzt die Datenbank konvertiert, d. h. alle Daten ausgelesen und UTF-8-kodiert wieder reingeschrieben.
probier's mal hiermit (ungeprüft): http://www.purebasic.fr/english/viewtop ... 820#205820

Grüße ... Kiffi
a²+b²=mc²
Antworten