如何在 paradox 5.0 for windows 数据库中加入图片文件
各位大虾我不知道如何在数据库的一个域中写入图片文件和mp3文件
请高手指点

解决方案 »

  1.   

    读文件
    function TDataBaseFileItems.ReadFile(const AGUID,
      ASaveFileName: String): Boolean;
    var
      ADOQ: TADOQuery;
    begin
      ADOQ :=TADOQuery  .Create(Application);
      ADOQ .ConnectionString :=FDBConnectStr;//将文件保存
      try
        ADOQ.SQL .Clear ;
        ADOQ .SQL .Add(Format('SELECT GUID,PATH,FILEIMAGE FROM FILEDATA WHERE GUID=''%s''',[AGUID]));
        ADOQ .Open;
        While Not ADOQ.Eof do
        begin
          TBlobField(ADOQ.FieldByName('FILEIMAGE')).SaveToFile(ASaveFileName);
          ADOQ.Next;
        end;
        Result:=TRUE;
      finally
        ADOQ.Free;
      end;
    end;
    保存文件,原来就有记录了,所以是修改,你你改成Insert 语句就可以了.
    function TDataBaseFileItems.SaveFile(const AGUID,
      AFileName: String): Boolean;
    var
      ADOCommand:TADOCommand;
      tempParameter:TParameter;
    begin
      if FileExists(AFileName) then
      begin
        try
        ADOCommand:=TADOCommand .Create(Application);
        ADOCommand  .ConnectionString :=FDBConnectStr ;
        tempParameter:=ADOCommand.Parameters.AddParameter;
        tempParameter.Name :='FILEIMAGE';
        tempParameter.DataType :=ftBlob ;
        ADOCommand.CommandText :=Format('UPDATE FILEDATA SET FILEIMAGE=:FILEIMAGE WHERE GUID=''%s''',[AGUID]) ;
        ADOCommand.Parameters.ParamByName('FILEIMAGE').LoadFromFile(AFileName,ftBlob);
        ADOCommand.Execute ;
        finally
          ADOCommand.Free;
        end;
      end;
    end;
      

  2.   

    procedure TForm20.Button1Click(Sender: TObject);//保存,假设第一个字段为存储图片的字段
    var
    picstream:tadoblobstream;
    begin
    adoquery1.Insert;
    picstream:=tadoblobstream.Create(tblobfield(adoquery1.fields[0]),bmWrite);
    picstream.LoadFromFile(openpicturedialog1.filename);
    picstream.Position:=0;
    tblobfield(adoquery1.Fields[0]).loadfromstream(picstream);
    adoquery1.post;
    end;
      

  3.   

    procedure TForm4.tupian();//读取
    var
      B:Tbitmap;
      JpegImage:TJpegImage;
      BS:TadoBlobStream;
    begin
     try//如果是Jpeg格式
      BS := TadoBlobStream.Create(TBlobField(ADOQuery1image), bmRead);
      JpegImage := TJpegImage.Create;
      JpegImage.JPEGNeeded;
      JpegImage.LoadFromStream(BS);
      Image1.Picture.Assign(JpegImage);
      JpegImage.Free;
      BS.Free;
     except//如果是BMP格式
      BS := TadoBlobStream.Create(TBlobField(ADOQuery1image), bmRead);
      B:=Tbitmap.Create;
      b.LoadFromStream(BS);
      Image1.Picture.Assign(b);
      B.Free;
      BS.Free;
     end;
    end;
    end;