Чтение строки Unicode из SQL Server с помощью Delphi 6

Мне нужно прочитать поле nvarchar(max) из базы данных SQL Server 2008, используя Delphi 6 и ADO. Я могу нормально обрабатывать текст Unicode, но кажется, что компонент ADO «предварительно преобразует» строку в кодовую страницу, прежде чем я даже взгляну на нее.

Я пытался получить доступ к полю как к TBlobField, но он также дает мне преобразованную версию: я храню 10 байтов данных, представляющих 5 китайских символов, а BlobSize возвращает 5.

Может ли кто-нибудь предложить способ получить необработанную память из поля BLOB-объектов без ее преобразования?


person Stephane    schedule 06.07.2010    source источник
comment
Спасибо за правки, Марк. Я действительно должен был прочитать это сообщение, прежде чем публиковать его.   -  person Stephane    schedule 07.07.2010


Ответы (1)


Я нашел это. Это оказалось очень просто: откройте набор данных, как если бы это было обычное поле, и сделайте следующее:

AQuery.FieldByName('LocalText').SetFieldType(ftWideString);
WSBuffer := (AQuery.FieldByName('LocalText') as TWideStringField).Value;

(WSBuffer является типом WideString).

person Stephane    schedule 07.07.2010