procedure TFrGmInfoInput.btnfindClick(Sender: TObject);
var
    szname: string;
    stream: TMemoryStream;
    i: Integer;
    jpeg: TJPEGImage;
begin
    with qryimagefind do
    begin
        Close;
        SQL.Clear;
        SQL.Text := 'select logo from test  ' +
            ' where type=''' + trim(edttype.Text) + '''';
        Open;
    end;
    if not qryimagefind.IsEmpty then
    begin
        try
            stream := TMemoryStream.Create;
            TBlobField(qryimagefind.FieldByName('logo')).SaveToStream(stream);
            stream.Position := 0;
            jpeg := TJPEGImage.Create;
            jpeg.LoadFromStream(stream);
            Image2.Picture.Assign(jpeg);
        finally
            jpeg.Free;
            stream.Free;
        end;
    end;
end;以上是查询的代码,之前运行没有错误,现在提示"JPEG  error #42",有点不懂.
但是如果按字段"type"更改某张图片后,又能查询,但重新打开界面输入字段内容查找却又提示如上的错误.
更新代码:procedure TFrGmInfoInput.btnupdateClick(Sender: TObject);
var
    stream: TMemoryStream;
    jpeg: TJPEGImage;
begin
    try
        with tblimage2 do
        begin
            CommandText := 'update test set logo=:logo where type=''' + trim(edttype.Text) +
                '''';        end;
        stream := TMemoryStream.Create;
        jpeg := TJPEGImage.Create;
        jpeg.Assign(Image1.Picture.Graphic);
        jpeg.SaveToStream(stream);
        stream.Position := 0;
        tblimage2.Parameters.ParamByName('logo').LoadFromStream(stream, ftBlob);
        tblimage2.Execute;
        ShowMessage('OK!');
    finally
        stream.Free;
        jpeg.Free;
    end;end;请高手们指点!万分感谢!

解决方案 »

  1.   

    图片保存到数据库的时候出现错误了,
    select logo from test where type='''+trim(edttype.Text)+''' 你必须确认你这条查询返回的是一张图片
      

  2.   

    密切关注
    我这种方法只能打开jpg格式的图片,向找个都行
    procedure TForm1.BitBtn3Click(Sender: TObject);
    var
      jpeg:TJpegImage;
    begin
       jpeg:=Tjpegimage.Create;
       adoquery1.Close;
       adoquery1.SQL.Text:='select id,tupian from table2 where id=''1'' ';
       adoquery1.Open;
       Tblobfield(adoquery1.FieldByName('tupian')).SaveToFile('c:\com.jpg');
       jpeg.LoadFromFile('c:\com.jpg');
       image1.Picture.Assign(jpeg);
       jpeg.Free;
    end;