请问怎么把图片存在数据库中?以及取出来?
我数据库表中有一个字段A,类型是image。怎么把图片存入和取出呢?

解决方案 »

  1.   

    dbimage控件,看demo里的db\fishxxx那个例子
      

  2.   

    Insert.SQL.Text:='insert into tablename(图形) values(:图形)';
    Insert.Parameters.ParamByName('图形').Assign(image1.picture.bitmap);
    Insert.ExecSQL;
      

  3.   

    //将图片加载到IMAGE控件中
    var filename:string;
    begin
        open1.Execute;
        if open1.FileName<>'' then
        begin
            filename:=extractfileext(open1.FileName);
            image1.Picture.LoadFromFile(open1.FileName);
            MS_JpegStream:=TMemoryStream.Create;
            M_BitMap:=TBitMap.Create;
            M_Jpeg:=TJpegImage.Create;
            if (FileName='.bmp') or (FileName='.BMP') then
            begin
                M_BitMap.LoadFromFile(Open1.FileName);
                M_Jpeg.Compress;
                M_Jpeg.Assign(M_BitMap);
            end
            else if (FileName='.jpg') or (FileName='.JPG') then
            begin
                M_Jpeg.LoadFromFile(open1.FileName);
            end;
            M_Jpeg.SaveToStream(MS_JpegStream);
        end;
    end;        
    //存入数据库
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.Add('insert into tt(image)');
    adoquery1.SQL.Add('values(:image)');
    adoquery1.parameters.ParamByName('image').LoadFromStream(MS_JpegStream,ftblob);
    adoquery1.ExecSQL;
      

  4.   

    将数据库中的图片读出
    var ms_jpegstream1:tmemorystream;
    begin
        MS_JpegStream1:=TMemoryStream.Create;
        (adoquery2.FieldByName('image') as tblobfield).savetostream(MS_JpegStream1);
        image1.Picture.Graphic:=nil;
        image1.Picture.Graphic:=TJpegImage.Create;
        MS_JpegStream1.Position:=0;
        image1.Picture.Graphic.LoadFromStream(MS_JpegStream1); 
    end;