AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zeoslib + Sqlite + Viel Text
Thema durchsuchen
Ansicht
Themen-Optionen

Zeoslib + Sqlite + Viel Text

Ein Thema von mcbain · begonnen am 15. Sep 2013 · letzter Beitrag vom 20. Sep 2013
Antwort Antwort
Seite 1 von 2  1 2      
mcbain

Registriert seit: 18. Mai 2011
50 Beiträge
 
#1

Zeoslib + Sqlite + Viel Text

  Alt 15. Sep 2013, 18:00
Datenbank: Sqlite • Version: 3.8.0.1 • Zugriff über: Zeoslib
Hallo,
ich verwende Sqlite mit den Zeos und DXE2.
Mein Problem ist, dass ein Text-Feld aus der Datenbank nicht komplett ausgelesen wird.
Ich habe mit meiner Tabelle ein DBGrid und ein DBMEmo verlinkt, allerdings werden mir immer nur 255 Zeichen in dem DBMemo angezeigt, obwohl mindestens 1200 Zeichen in dem Feld der Datenbank stehen.
Ich habe auch bereits die DisplayWidth erhöht, jedoch ändert sich nichts.
Wenn ich die Spalten im ComponentEditor meiner Table Komponente automatisch hinzufügen lasse, erkennt der Editor das Text Feld der Datenbank als StringField, allerdings müsste er wohl eher ein Memofield erkennen, da ich die Länge des strings in der Datenbank ja nicht wissen kann.

Kann mir hier jemand weiterhelfen bitte?
Vielen Dank.
Gruß
MC
  Mit Zitat antworten Zitat
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: Zeoslib + Sqlite + Viel Text

  Alt 15. Sep 2013, 21:37
Zeos kürzt nicht Typ-definierte strings (z.B. VARCHAR()) auf 255 Zeichen.

Declariere das Feld als TEXT und das Memo wird vollständig gelesen...

Änderungen kommen erst mit 7.2, da es sich um Alltime-Code handelt.

Gruß, Michael
  Mit Zitat antworten Zitat
mcbain

Registriert seit: 18. Mai 2011
50 Beiträge
 
#3

AW: Zeoslib + Sqlite + Viel Text

  Alt 15. Sep 2013, 22:10
Vielen Dank für die Antwort.
Wo meinst du soll ich das Feld als Text deklarieren? In der Datenbank ist das Feld als TEXT Feld erstellt.
Das Problem liegt auch daran, dass z.B. bei zTable.FieldbyName('meineSpalte').AsString := 'mein laaanger Text....'; nur 255 Zeichen in die Datenbank gespeichert werden.

Gruß
mc
  Mit Zitat antworten Zitat
mcbain

Registriert seit: 18. Mai 2011
50 Beiträge
 
#4

AW: Zeoslib + Sqlite + Viel Text

  Alt 17. Sep 2013, 07:30
Ich habe rausgefunden, dass das TEXT-Feld einer Virtuellen SQLite Tabelle nicht gleich dem TEXT-Feld eine normalen SQLite Tabelle in Delphi erkannt wird. Das 1. erkennt er richtig als Memo Feld, aber das 2. wird immer als normaler String erkannt.
Hat noch jemand ne Idee was ich machen könnte?

Danke.
Gruß
Mc
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Zeoslib + Sqlite + Viel Text

  Alt 17. Sep 2013, 08:36
Zeos kürzt nicht Typ-definierte strings (z.B. VARCHAR()) auf 255 Zeichen.
Was ist das für eine bescheuerte Logik die Beschränkung eines DBMS (in einer alten Version) auf alle DB's anzuwenden?

Declariere das Feld als TEXT und das Memo wird vollständig gelesen...
TEXT-Felder haben bei fast allen DBs einige Nachteile gegenüber varchar-Feldern.
Das dürfte nur für wenige Einsatzfälle eine sinnvolle DB-Anpassung darstellen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mcbain

Registriert seit: 18. Mai 2011
50 Beiträge
 
#6

AW: Zeoslib + Sqlite + Viel Text

  Alt 17. Sep 2013, 11:34
Ich erläutere mein Problem mal etwas genauer:
Ich arbeite gerade an einem Projekt, in dem ich Volltextsuche benötige.
Das Ganze soll allerdings nur lokal im kleinen Rahmen stattfinden, deshalb ist SQLite völlig ausreichend.
Aber da es durchaus mal sinnvoll sein kann, zu sehen, was mein Programm als Volltext abgespeichert hat, würde ich gerne den Text in einem MEmo ausgeben lassen. Nur leider werden mir ja immer nur 255 Zeichen angezeigt...

Alles andere Funktioniert bereits recht zuverlässig mit den ZEOS, nur bekomme ich das mit dem String nicht in den Griff...

Wenn jemand also noch einen Tip hat, bzw. mir die Codestelle bei den ZEOS nennt, die ich man anpassen müsste, damit mir der gesamte String gespeichert und gelesen wird, wäre ich sehr dankbar.

Vielen Dank.
Gruß
mc
  Mit Zitat antworten Zitat
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

AW: Zeoslib + Sqlite + Viel Text

  Alt 17. Sep 2013, 18:29
Ich habe rausgefunden, dass das TEXT-Feld einer Virtuellen SQLite Tabelle nicht gleich dem TEXT-Feld eine normalen SQLite Tabelle in Delphi erkannt wird. Das 1. erkennt er richtig als Memo Feld, aber das 2. wird immer als normaler String erkannt.
Hat noch jemand ne Idee was ich machen könnte?
Mc
..."

Gib mir etwas zum Arbeiten und ich kann da ein Fix bereitstellen. Außerdem müßte ich die Zeos-Version wissen.
Zeos kürzt nicht Typ-definierte strings (z.B. VARCHAR()) auf 255 Zeichen.
Was ist das für eine bescheuerte Logik die Beschränkung eines DBMS (in einer alten Version) auf alle DB's anzuwenden?

Declariere das Feld als TEXT und das Memo wird vollständig gelesen...
TEXT-Felder haben bei fast allen DBs einige Nachteile gegenüber varchar-Feldern.
Das dürfte nur für wenige Einsatzfälle eine sinnvolle DB-Anpassung darstellen.
LOL, ja Hand-Shake. Hmm ich hab's nicht so geschrieben und scheint mir aus URALT-Zeiten zu kommen (String=ShortString). Jedoch kenne ich nur 2 DBMS die undefnierte Längen unterstützen: PostgreSQL und SQLite. Mehr? Für PostgreSQL hab ich das schon geändert seit 7.1! SQLite steht noch aus und da wir ein Behavior-Freeze seit 7.1-Beta haben, kommt das Patch erst mit 7.2. Ich kann nicht alles gleichzeitig machen, Berhnardt. Alles geschieht in meiner Freizeit und kostet nix.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#8

AW: Zeoslib + Sqlite + Viel Text

  Alt 17. Sep 2013, 19:13
Zitat:
Alles geschieht in meiner Freizeit und kostet nix.
...dafür an dieser Stelle mal Dank und Respekt.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Zeoslib + Sqlite + Viel Text

  Alt 17. Sep 2013, 20:07
LOL, ja Hand-Shake. Hmm ich hab's nicht so geschrieben und scheint mir aus URALT-Zeiten zu kommen (String=ShortString).
Müsste es nicht eher aus der Prä-MySQL_5.0.3-Zeit stammen (Siehe: http://dev.mysql.com/doc/refman/5.0/en/char.html)
Wie alt ist den Zeos? 18 Jahre (also mit D1 erschienen).

Jedoch kenne ich nur 2 DBMS die undefnierte Längen unterstützen: PostgreSQL und SQLite. Mehr? Für PostgreSQL hab ich das schon geändert seit 7.1! SQLite steht noch aus und da wir ein Behavior-Freeze seit 7.1-Beta haben, kommt das Patch erst mit 7.2.
Es geht mir darum das man nicht einfach varchar durch text ersetzen kann. Performance und SQL-Technisch sind hier einige unterschiede.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

AW: Zeoslib + Sqlite + Viel Text

  Alt 18. Sep 2013, 06:19
Guten Morgen,

Müsste es nicht eher aus der Prä-MySQL_5.0.3-Zeit stammen (Siehe: http://dev.mysql.com/doc/refman/5.0/en/char.html)
Wie alt ist den Zeos? 18 Jahre (also mit D1 erschienen).
Hmm ja/jain, k.A. Also SQLite folgt keinen konkreten Feld-Typ Definitionen und prüft diese auch nicht. Du kannst das Feld auch ohne Typ deklarieren, oder den Typ als "XYZ" beschreiben. Schreibe 10x Integer, SQLite gibt dir einen Int64 Type für die Column zurück. Nun schreibe einen String und schwups haben wir einen String Typen. Zeos ging einfach bei den String-basierenden Result-Sets (e.g. MySQL(nicht Real-Prepared), PostgreSQL, SQLite) davon aus, alle unbekannten Typen als VARCHAR(255) zu handeln. Tatsache würde ich auch behaupten, daß wohl die Performance der Grund des Übels ist.

Wir sind uns einig: TEXT/CLOB... Typen sollten so weit, wie möglich vermieden werden, da diese zu Lasten der Performance gehen.

@mcbain

Definiere das Feld als VARCHAR(1700) und es rockt wieder..
  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 21:18 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