var stream:TFileStream;
    filedirectory:String;begin
    OpenDialog1.Execute;
    filedirectory:=OpenDialog1.FileName;
    if FileExists(trim(filedirectory)) then begin
    stream:=TFileStream.Create(trim(filedirectory),fmOpenRead);
    try
      with adoquery1 do begin
        close;
        sql.Clear;
        sql.Text:='select * from picture';
        open;
        insert;
        TBlobField(FieldByName('pic')).LoadFromStream(stream);
        FieldByName('pname').AsString:=filedirectory;        post;
        image1.Picture.LoadFromFile(filedirectory);      end;
    finally
      stream.Free;
    end;
end;
end;昨天还能打开图片,今天就报错了。向数据库添加图片成功,但是Image显示图片的时候报错: 进程无法访问该文件,因为另一个进程正在使用该文件。

解决方案 »

  1.   

    显示图片用dbimage,怎么还用image呀?
      

  2.   

    image1.Picture.LoadFromFile(filedirectory); 这里的时候报错了。
      

  3.   

    finally下加一句
    adoquery1.close试试
      

  4.   

    begin
        OpenDialog1.Execute;
        filedirectory:=OpenDialog1.FileName;
        if FileExists(trim(filedirectory)) then begin
        stream:=TFileStream.Create(trim(filedirectory),fmOpenRead);
        try
          with adoquery1 do begin
            close;
            sql.Clear;
            sql.Text:='select * from picture';
            open;
            insert;
            TBlobField(FieldByName('pic')).LoadFromStream(stream);
            FieldByName('pname').AsString:=filedirectory;        post;
            stream.Free;
            image1.Picture.LoadFromFile(filedirectory);      end;
        except
          stream.Free;
        end;
    end;
      

  5.   

    var stream:TFileStream;
        filedirectory:String;begin
        OpenDialog1.Execute;
        filedirectory:=OpenDialog1.FileName;
        image1.Picture.LoadFromFile(filedirectory);
        if FileExists(trim(filedirectory)) then begin
        stream:=TFileStream.Create(trim(filedirectory),fmOpenRead);
        try
          with adoquery1 do begin
            close;
            sql.Clear;
            sql.Text:='select * from picture';
            open;
            insert;
            TBlobField(FieldByName('pic')).LoadFromStream(stream);
            FieldByName('pname').AsString:=filedirectory;        post;      end;
        finally
          stream.Free;
        end;
    end;
    end;