![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: ZeosLib 6.6.6-stable
Mit ZeosLib umlaute in SQLite3 DB schreiben
Hallo Zusammen,
für ein bestimmtes Projekt muss ich Daten in einer SQLite3 DB schreiben. Die Daten enthalten Umlaute. Die DB wird dann mit C# ausgelessen, dabei werden die Umlaute falsch Encoded. Vermutlich schreibt ZeosLib die Daten in ANSI. Ich benötige die Daten jedoch in UTF8 Kodierung. Hat jemand eine Idee wie ich die ZeosLib beibringen kann dass er in UTF8 die Daten schreibt? Gruß Kostas |
AW: Mit ZeosLib umlaute in SQLite3 DB schreiben
Es gibt in Delphi die Funktion "AnsiToUtf8()" und das Pendant "Utf8ToAnsi" in der System.pas.
|
AW: Mit ZeosLib umlaute in SQLite3 DB schreiben
Super, genau das ist es.
Tausend Dank und einen schönen Tag. Gruß Kostas |
AW: Mit ZeosLib umlaute in SQLite3 DB schreiben
Bei Anlage der SQLite-DB kann man auch den Zeichensatz angeben.
Bei mir geht Zeos auch mit Umlauten und ohne sonstige Konvertierung. Grüße |
AW: Mit ZeosLib umlaute in SQLite3 DB schreiben
Hi Martin,
hast du zufällig die syntax parat? Ich habe unter TZConnection.Properies den Eintrag: PRAGMA encoding = "UTF-8" hat jedoch nicht gebracht. Vermutlich ist nur die Syntax falsch. Gruß Kostas |
AW: Mit ZeosLib umlaute in SQLite3 DB schreiben
Das hilft dir nichts, denn
Zitat:
An den Zeos-Komponenten kannst du einstellen was du willst, die DB muss darauf vorbereitet sein. |
AW: Mit ZeosLib umlaute in SQLite3 DB schreiben
Zitat:
ich habe die Datenbank mit dem Tool SQLiteAdmin angelegt. Leider gibt es da keine Möglichkeit den Zeichensatz anzugeben, auch das Toll SQLiteSpy gibt mit keine Möglichket dafür. Ist dir bekannt, wie ich die DB mit Zeos anlegen und dabei auch den Zeichesatz einstellen kann? Ich arbeite sonst micht mit Zeos. Das ist das einzige Programm da die DB auf ein PDA läuft. Gruß Kostas |
AW: Mit ZeosLib umlaute in SQLite3 DB schreiben
Der Befehl ist mit verschiedenen Komponenten / Wrappern unterschiedlich zu implementieren.
Ich verwende die rudimentären Routinen aus "DISQLite3 Personal".. und das schöne ist.. ich brauche keine DLL und nix - ist alles implementiert.. .. hier ein Schnippsel mit kleinen Erklärungen und die Zeile - um welche es geht ist mit einem ">>" markiert.
Delphi-Quellcode:
Hinweis1: Die Function sqlite3_check() wandelt eine durch die Routine als Zahl zurückgegebenen Fehlercode in Klartext um
uses
..., DISQLite3Api,DISystemCompat,... // eingebundene Units var DB: sqlite3_ptr; // Globale Variable für eine Datenbankdatei Stmt: sqlite3_stmt_ptr; // Globale Variable für ein vordefiniertes Statement .. brauche ich aber nicht :-) .... Procedure CreateDatabases; var MySetupStatement : String; MyDataStatement : String; begin MySetupStatement:='CREATE TABLE IF NOT EXISTS Setup (' + 'idno BIGINT,' +' clearonnewrecord BOOLEAN,' +' lastfilename CHARACTER(60))'; MyDataStatement:='CREATE TABLE IF NOT EXISTS Data (' +' idno BIGINT,' +' name CHARACTER(80) PRIMARY KEY,' +' farbe CHARACTER(20),' +' modus INTEGER,' +' gruppe BOOLEAN,' +' hersteller CHARACTER(60),' +' jahr CHARACTER(4),' +' synonyms CHARACTER(100),' +' deu BLOB,' +' eng BLOB,' +' fra BLOB,' +' ita BLOB,' +' spa BLOB,' +' pol BLOB,' +' ung BLOB,' +' hol BLOB,' +' chn BLOB,' +' rus BLOB )'; sqlite3_initialize; // SQLite3 Routinen initialisieren und Speicher anfordern sqlite3_check(sqlite3_open('SRS4.db3', @DB)); // Datenbank Öffnen und Handle der Variable DB zuweisen sqlite3_exec_fast(DB, 'PRAGMA locking_mode=EXCLUSIVE'); // Schreibschutz aktivieren sqlite3_exec_fast(DB, 'PRAGMA cache_size=4000'); // Kleiner Lese/Schreibpuffer erzeugen sqlite3_exec_fast(DB, 'PRAGMA synchronous=OFF'); // Erhöht Schreibzugriff aber erniedrigt Sicherheit >>sqlite3_exec_fast(DB, 'PRAGMA encoding = "UTF-8"'); // Erzeugt DB mit UTF-8 Zeichensatz Unterstützung sqlite3_exec_fast(DB, MySetupStatement); // Datenbank SETUP erzeugen sqlite3_exec_fast(DB, MyDATAStatement); // Datenbank DATA erzeugen sqlite3_exec_fast(DB, 'CREATE INDEX data_idno ON data (idno)'); // index in der Tabelle "data" erzeugen sqlite3_exec_fast(DB, 'INSERT INTO setup (idno,clearonnewrecord,' // Setup Daten eintragen +'lastfilename)' +'VALUES (0,0,"SRS4.db3")'); sqlite3_check(sqlite3_close(DB), DB); // Datenbank schließen und ggf Fehler emitteln sqlite3_shutdown; // Speicher freigeben end; was "seeeehr" angenehm ist Hinweis2: Wenn eine Datenbank mit einem Zeichensatz erstellt wird (in meinem Beispiel mit UTF-8 Codierung), so ist eine spätere Änderung in einen anderen Zeichensat (z.B. UTF-16) nicht mehr möglich. |
AW: Mit ZeosLib umlaute in SQLite3 DB schreiben
Danke für die Info.
Ich habe mein Projekt mittlerweile anders gelöst. Für weitere Projekte ist die Info sicherlich sehr hilfreich. Gruß Kostas |
AW: Mit ZeosLib umlaute in SQLite3 DB schreiben
@Kostas
Klar kein Problem.. habe es auch für "weitersuchende" eingetragen.. es geht mir als genauso.. heutzutage gibt es nur noch wenige sinnvoll gepflegte Newsgroups und Foren.... Gruß Michael :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz