in mySQL DB Feld mit Datentyp (TEXT) updaten per ADO, ODBC

20. August 2008 17:12

Hallo Zusammen,

ich habe ein Problem beim Schreiben von einem String in ein Feld vom Datentyp TEXT einer mySQL-Tabelle.
Es gibt keinerlei Probleme beim Schreiben von Feldern mit dem Datentyp VARCHAR, INT, Date und Co.

mySQL --> NAV
(TEXT) --> (BLOB) OK
(VARCHAR) --> (TEXT) OK
(INT) --> (INTEGER) OK

NAV --> mySQL
(BLOB) --> (TEXT) Problem
(TEXT) --> (TEXT) Problem
(TEXT) --> (VARCHAR) OK
(INTEGER) --> (INT) OK

Auslesen des besagten Feldes aus der mySQL und speichern des Files in ein BLOB (NAV)
...
ADOStream.Type(2);
ADOStream.Open;
ADOStream.WriteText(ADORecSet.Fields.Item(FELDNAME).Value);
ADOStream.SaveToFile(Filename);

rec.description.IMPORT(Filename);
....


Versuche ich das gleiche jedoch anders herum (NAV -> mySQL) dann bekomme ich beim Schreiben in das Feld nur Hyroglyphen angezeigt.
Ich vermute das man die Daten "binär" übergeben muss... aber wie?

Vielen Dank für eure Hilfe
Swen

Re: in mySQL DB Feld mit Datentyp (TEXT) updaten per ADO, ODBC

21. August 2008 16:31

Hi!

Also der Datentyp "Text" in NAV ist alphanumerisch, kein binärer DT - NAV "Text" entspricht "varchar". In SQL ist "Text" aber binär, deshalb kann ein direkter Transfer "Text"(NAV) -> "Text"(SQL) niemals funktionieren.

Der DT "BLOB" in NAV wird in SQL normalerweise zu "Image" - was ebeso binär ist wie "Text"(SQL). Allerdings werden die BLOB's in NAV standardmässig komprimiert, daher funktioniert vermutlich die Übertragung "BLOB"(NAV) -> "Text"(SQL) nicht.
Wenn Du die Eigenschaft "Compressed" des BLOB Feldes in NAV auf FALSE setzt, könnte es aber klappen ...

Gruß,
Jörg