同样两段d7代码,不同的只是一用bde一个用ado,却一个能行一个死活都不行!/////////bde
    Query1.edit;
    fData := TBlobStream.Create(TBlobField(Query1.FieldByName('Data')), bmWrite);
    with twriter.Create(fData , Len) do
    begin
      try
        fData .Write(Features^, Len);
      finally
        free;
      end;
    end;
    Query1.Post;
//////////ado
    ADOQuery1.edit;
    fData := TADOBlobStream.Create(TBlobField(ADOQuery1.FieldByName('Data')), bmWrite);
    with twriter.Create(fData , Len) do
    begin
      try
        fData .Write(Features^, Len);
      finally
        free;
      end;
    end;
    ADOQuery1.Post;//ADOTabel也是过一样不行,Features为Pointer,len=200   小弟想用ado行一次,请各位帮忙!!!!!!

解决方案 »

  1.   

    你把ADOQuery1.FieldByName('Data'改为ADOQuery1.FieldByName('Data').value)可以吗?我也不太清楚,但是看你的代码是不是向数据库中存入图片呢?要是这样的话你最好想数据库中存入图片的地址不就可以了吗,而且这样的话还可以将数据库的存储大小变得很小了,只是题一个建议,这要看你自己的选择了
      

  2.   

    //////////ado
        ADOQuery1.edit;
        fData := TADOBlobStream.Create(TBlobField(ADOQuery1.FieldByName('Data').asString), bmWrite);
        with twriter.Create(fData , Len) do
        begin
          try
            fData .Write(Features^, Len);
          finally
            free;
          end;
        end;
        ADOQuery1.Post;//ADOTabel也是过一样不行,Features为Pointer,len=200
      

  3.   

    to sailer_shi(笨笨虫) 
    你的方法行不通!我要保存的不是图片,而是被读入内存的一段数据!有人帮我吗?谢谢谢谢了!
      

  4.   

    to hmzgz81(哩翱) 
    asstring 也不行!我都要急死了!我存的是指纹数据,sdk给的时bde的代码,而我们却要用ado......
      

  5.   

    有些数据库的ado存取大字段需要补丁。我记得很久以前我用ado存取db2的时候,db2当时不支持ado的大字段处理
      

  6.   

    我用的是d7+mssql2000,应该不用补丁的阿!
    谁能帮我啊?
      

  7.   

    试试:
       ADOQuery1.edit;
        fData := TADOBlobStream.Create(TBlobField(ADOQuery1.FieldByName('Data')), bmWrite);
        fData.Position:=0;
        fData .Write(Features^, Len);
        ADOQuery1.Post;//ADOTabel也是过一样不行,Features为Pointer,len=200
      

  8.   

    //////////ado
        ADOQuery1.edit;
        fData := TADOBlobStream.Create(TBlobField(ADOQuery1.FieldByName('Data').asVariant), bmWrite);
        with twriter.Create(fData , Len) do
        begin
          try
            fData .Write(Features^, Len);
          finally
            free;
          end;
        end;
        ADOQuery1.Post;//ADOTabel也是过一样不行,Features为Pointer,len=200
      

  9.   

    我在oracle下试过 ADOQuery1.sql.text:=select blob1 from table1 //blob1是BLOB型出现  数据类型不支持 的提示框。TADODataSet,TADOTable也是。
      

  10.   

    这样的问题我也遇到的,不要老是试试不行,给个解决问题的方法呀(我也是
    delphi+mssqlserver)
      

  11.   

    这可能是DELPHI7的ADO的BUG,我也被莫名其秒的错误搞大了头。不是一次两次了,差不多每次都这样。有没人有回答哦,或者有DELPHI7的补丁下载?
      

  12.   

    谢谢大家,我以解决了
    原来只要这样...//////////ado
        var fData : TMemoryStream;
        ..........
        fData:= TMemoryStream.Create;
        with twriter.Create(fData , Len) do
        begin
          try
            fData .Write(Features^, Len);
          finally
            free;
          end;
        end;    ADOQuery1.edit;
        (ADOQuery1.FieldByName('Data') As BlobField).LordFromStream(fData);
        ADOQuery1.Post;//