DELPHI+Sql Server的程序,当对image类型字段存取较大图片时,总是报'invalid blob length',请教高手是怎么回事,怎么解决?

解决方案 »

  1.   

    将Image属性IncrementalDisaplay属性设为true,试 试
      

  2.   

    我不知道你的思路,提供一个我的代码,没问题的。
    存入(bmp是例子, 随便什么文件都可以)
    imagestream:=tfilestream.create('d:\test.bmp',fmShareDenyNone);
    Sqlclause:='insert into  table values(:aa)';
            tempquery.SQL.Clear;
            tempquery.SQL.Add(SqlClause);
            Tempquery.Parameters.ParamByName('aa').LoadFromStream(imagestream,ftblob);
            tempquery.ExecSQL;取出
    SqlClause:='select * from table';
          tempquery:=tadoquery.Create(application);
          try
            tempquery.SQL.Clear;
            tempquery.SQL.Add(SqlClause);
            tempquery.open;
            while not tempquery.Eof do
            begin          filename:='d:\test1.bmp'
    (tempquery.fieldbyname('image') as TBlobField).savetofile(filename);
              imagestream:=TFileStream.Create(filename,fmShareDenyNone);
    tempquery.Next;
            end;
          finally
            tempquery.Free;
          end;
        end;
    图片字段是ole型
    我用的delphi5,ado2.5,win98,没问题
      

  3.   

    我摘的别人的例子,也许会对你有所帮助!
    以下是我觉得在所有图片存取方法中最简单的方法
    use jpeg,Clipbrd、、、、、、、、、、、、、
    //Save to database
    Image1.Picture.LoadFromFile('FileName');
    if not (Image1.Picture.Graphic Is TBitmap) then
    begin
      ClipBoard.Assign(Image1.Picture);
      Image1.Picture.Bitmap.Assign(ClipBroad);
      ClipBoard.Clear;
    end;//Change the picture that's not belonged to .bmp to .bmp
        // picture 
    Table1.Edit;
    Table1.FieldByName('Image').Assign(Image1.Picture);
    Table1.Post;
    //get from database
    Image1.Picture.Bitmap.Assign(TPicture(Table1.FieldByName('Image')));