AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Mit ZeosLib umlaute in SQLite3 DB schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Mit ZeosLib umlaute in SQLite3 DB schreiben

Ein Thema von Kostas · begonnen am 8. Nov 2010 · letzter Beitrag vom 14. Apr 2011
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.060 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Mit ZeosLib umlaute in SQLite3 DB schreiben

  Alt 8. Nov 2010, 13:33
Datenbank: SQLite • Version: 3 • Zugriff über: ZeosLib 6.6.6-stable
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
  Mit Zitat antworten Zitat
seifman
(Gast)

n/a Beiträge
 
#2

AW: Mit ZeosLib umlaute in SQLite3 DB schreiben

  Alt 8. Nov 2010, 14:07
Es gibt in Delphi die Funktion "AnsiToUtf8()" und das Pendant "Utf8ToAnsi" in der System.pas.
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.060 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Mit ZeosLib umlaute in SQLite3 DB schreiben

  Alt 16. Nov 2010, 14:53
Super, genau das ist es.
Tausend Dank und einen schönen Tag.

Gruß Kostas
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Mit ZeosLib umlaute in SQLite3 DB schreiben

  Alt 16. Nov 2010, 16:12
Bei Anlage der SQLite-DB kann man auch den Zeichensatz angeben.
Bei mir geht Zeos auch mit Umlauten und ohne sonstige Konvertierung.

Grüße
Martin Schaefer
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.060 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Mit ZeosLib umlaute in SQLite3 DB schreiben

  Alt 16. Nov 2010, 23:55
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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Mit ZeosLib umlaute in SQLite3 DB schreiben

  Alt 17. Nov 2010, 00:41
Das hilft dir nichts, denn
Bei Anlage der SQLite-DB kann man auch den Zeichensatz angeben.
Bei mir geht Zeos auch mit Umlauten und ohne sonstige Konvertierung.
Du kannst der DB bei der Anlage mitteilen, da kommen Daten in UTF8

An den Zeos-Komponenten kannst du einstellen was du willst, die DB muss darauf vorbereitet sein.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.060 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Mit ZeosLib umlaute in SQLite3 DB schreiben

  Alt 18. Nov 2010, 11:11
An den Zeos-Komponenten kannst du einstellen was du willst, die DB muss darauf vorbereitet sein.
Hi,

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
  Mit Zitat antworten Zitat
Miggi

Registriert seit: 8. Jun 2004
Ort: Seelbach
7 Beiträge
 
Delphi XE Professional
 
#8

AW: Mit ZeosLib umlaute in SQLite3 DB schreiben

  Alt 14. Apr 2011, 09:18
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:
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;
Hinweis1: Die Function sqlite3_check() wandelt eine durch die Routine als Zahl zurückgegebenen Fehlercode in Klartext um
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.
Michael
HUMMEL - gut - schnell - preiswert
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.060 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Mit ZeosLib umlaute in SQLite3 DB schreiben

  Alt 14. Apr 2011, 12:46
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
  Mit Zitat antworten Zitat
Miggi

Registriert seit: 8. Jun 2004
Ort: Seelbach
7 Beiträge
 
Delphi XE Professional
 
#10

AW: Mit ZeosLib umlaute in SQLite3 DB schreiben

  Alt 14. Apr 2011, 13:34
@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
Michael
HUMMEL - gut - schnell - preiswert
  Mit Zitat antworten Zitat
Antwort Antwort


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 14: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