我需要使用Delphi 6和ADO从SQL Server 2008数据库读取nvarchar(max)
字段。我可以很好地处理unicode文本,但似乎ADO组件在我看之前就已经将字符串“预转换”为代码页。
我尝试以TBlobField的形式访问该字段,但它也提供了转换后的版本:我存储10个字节的数据,表示5个汉字,BlobSize返回5。
谁能建议一种从blob字段获取原始内存而不进行转换的方法?
最佳答案
我找到了。事实证明这很简单:就像打开一个正常字段一样打开数据集,然后执行以下操作:
AQuery.FieldByName('LocalText').SetFieldType(ftWideString);
WSBuffer := (AQuery.FieldByName('LocalText') as TWideStringField).Value;
(WSBuffer是WideString类型)。