哪位高手告诉我SQL SERVER的varbinary类型字段的数据在DELPHI里怎样读出来。
    就像varchar类型的fieldbyname('fieldname').asstring这样的!

解决方案 »

  1.   

    保存到文件中的话就是这样了:
    TBlobField(FieldByName('xx')).SaveToFile('c:\a.bat');
      

  2.   

    如果是保存到流中的话就这样:
    TBlobField(FieldByName('xx')).SaveToStream(stream);//stream是定义好的tstream类型的变量。
      

  3.   

    忘了说明了。
    比如我有个字段名为fieldtest  varbinary类型的
    该表某记录的该字段值为0x2F       我只是要把0x2F读出来,没对它做任何的操作。
      

  4.   

    TBlobField(FieldByName('xx')).SaveToStream(stream);//stream是定义好的tstream类型这是正确的
      

  5.   

    高手在哪里啊?我不想通过流而直接取出varbinary的值该怎么办?
    如果一定要通过流,那是不是要写到流之后在把流的数据读到buffer缓冲区里?具体如何实现?请给个例子,谢谢!~~~~加分100
      

  6.   

    select Convert(Varchar(100),XX) AAA from TableNameFieldByName('AAA').AsString;
      

  7.   

    昨晚看了一个晚上的书。
    里面说先用TBlobField把数据库里的varbinary值读到流里,再把流里的数据读到缓冲区里。比如var
     pc:pchar;
     stream:TMemoryStream
    begin
     stream:=TMemoryStream.create;
     …
     …
     TBlobField(FieldByName('xx')).SaveToStream(stream);
     stream.read(pc,2*stream.size);
     showmessage(pc);
    end;可是这样好象不行啊!哪个高手帮忙看一下
      

  8.   

    没明白你要得到的结果是什么。
    本人一般在数据库中用这种类型的字段是用来存储图片或者OLE对象。
    水平有限,帮不上你了。
      

  9.   

    我是把一个界面的某个东西的状态用二进制表示,比如我有4个checkbox,对应一个二进制值0000,当第一个checkbox被打勾,二进制值就为1000。而我 数据库里存的就是这个二进制转十六进制之后的值
    0x8。我现在要把这个0x8再取出来,然后显示4个checkbox的状态。可能这样比较麻烦,但老大这样要求,没办法。哪位高人帮忙,拿走我全部家当——250+50分我也愿意。