Чтение строки Unicode из SQL Server с Delphi 6 - PullRequest
4 голосов
/ 06 июля 2010

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

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

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

1 Ответ

3 голосов
/ 07 июля 2010

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

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

(WSBuffer - это тип WideString).

...