我在sql server里面定义了一个binary(1604)的字段,里面存储的是401个single类型的数据,我现在怎么也读不出来,给位高手帮我看看。
Stream: TBlobStream;
Stream := TBlobStream.Create(Query1.FieldByName('f_BValue')  As TblobField , bmRead);
执行这条语句报错,说什么类型转换错误

解决方案 »

  1.   

    你把delphi中的几种数据类型都尝试看看
      

  2.   

    看看
    Query1.FieldByName('f_BValue').ClassName
    是啥内容。
      

  3.   

    可以读出:
    如:
    create table ttt (id integer,dat binary(1604))
    这样就可以
    procedure TForm1.Button2Click(Sender: TObject);
     VAR
      MS: TMemoryStream;
      buff:array [0..1604] of char; //按你的要求也可定义为buff array[0..401] of integer
    begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Text:='select id,dat from ttt where id=1';
    ADOQuery1.Open;
    Edit1.Text:=IntToStr(ADOQuery1.FieldValues['id']);
    (ADOQuery1.FieldByname('dat') AS TBinaryField).GetData(@buff);//结果在buff中
    end;
      

  4.   

    // MS: TMemoryStream;
    这行不要