delphi将图片保存到SQL数据库和读取图片

  1. procedure TForm1.LoadPictureClick(Sender: TObject); // 上传图片begin OpenPictureDialog1.Title := '打开图片'; if OpenPictureDialog1.Execute then begin Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); end;end;

  2. procedure TForm1.saveClick(Sender: TObject); //保存var Stream:TMemoryStream;begin try Stream := TMemoryStream.Create; // 创建内存流 Image1.Picture.Graphic.SaveToStream(Stream); // 将图片保存到内存流中

    //Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);(另一种方法) adoquery1.Close; adoquery1.SQL.Clear; adoQuery1.SQL.Add('Insert into test3 values (:id,:photo)'); ADOQuery1.Parameters.ParamByName('id').Value := editId.Text; adoQuery1.Parameters.ParamByName('photo').LoadFromStream(Stream,ftBlob); // 读取保存的内存图 adoquery1.ExecSQL; finally Stream.Free; // 释放内存流 end;end;

  3. procedure TForm1.ReadClick(Sender: TObject); // 读取图片var Stream:TMemoryStream; Jpg:TjpegImage;begin ADOQuery1.Close; ADOQuery1.SQL.Text:='SELECT * FROM test3 where id =' + editId.Text; // 查询图片 ADOQuery1.Open; if not ADOQuery1.FieldByName('photo').IsNull then begin Stream:=TMemoryStream.Create ; Jpg:=TjpegImage.Create ; TBlobField(ADOQuery1.FieldByName('photo')).SaveToStream(Stream); // 显示的转换为BlobField并保存到内存流 Stream.Position :=0; jpg.LoadFromStream(Stream); // 加载图片 image2.Picture.Assign(Jpg); end else begin image2.Picture :=nil; end;

    Stream.Free;

    Jpg.Free;end;

    END