通过网盘分享的文件:PDF2DB-V3.rar
链接: https://pan.baidu.com/s/1exGp_QC1Das1TPAhnT0Q9A?pwd=44z2 提取码: 44z2

在Delphi中将JPG存入SQLite数据库

CREATE TABLE "Images" ( 
"ID" INTEGER PRIMARY KEY AUTOINCREMENT, 
"Filename" varchar(30) NOT NULL, 
"Description" memo, 
"Image" image) 
procedure TForm4.Button1Click(Sender: TObject);
var
    FileStream: TFileStream;   //文件流
begin
    FileStream := TFileStream.Create('8.jpg', fmOpenReadWrite);
     FDQuery1.Close;
     FDQuery1.SQL.Text:=('Insert into Images  values ( null,''aa.jpg'',''sss'', :photo)');    // 进行插入操作
     FDQuery1.ParamByName('photo').LoadFromStream(FileStream,ftBlob);
     FDquery1.ExecSQL;
    FileStream.Free;
end;

 从image1导进 入 数据库

var
  Stream:TMemoryStream;       //内存流
begin
    Stream := TMemoryStream.Create; //  创建内存流
    Image1.Picture.Graphic.SaveToStream(Stream);   // 将图片保存到内存流中
     FDquery1.Close;
     FDQuery1.SQL.Text:=('Insert into Images  values ( null,''aa.jpg'',''sss'', :photo)');    // 进行插入操作
     FDQuery1.ParamByName('photo').LoadFromStream(Stream,ftBlob); // 读取保存的内存图
     FDquery1.ExecSQL;
    Stream.Free;     // 释放内存流
end;

 从SQLite数据库 导出到本地文件

var
  FileStream: TFileStream;
  BlobStream: TStream;      //数据库 Blob流
begin
  FDquery1.Open('select * from Images where id='+ edit1.Text+'');
  if not FDQuery1.IsEmpty then      begin
      BlobStream := FDQuery1.CreateBlobStream(FDQuery1.FieldByName('Image'), bmRead);        // 获取BLOB流

      BlobStream.Position := 0; // 确保流位置在开头
      FileStream := TFileStream.Create('aa.mp3', fmCreate); // 创建文件流  ,从数据库 导出到本地文件
      FileStream.CopyFrom(BlobStream, BlobStream.Size);
      FileStream.Free;

      BlobStream.Free;
  end         else          begin
      ShowMessage('未找到指定ID的Jepg文档');
  end;
end;
从数据库导出到image
var
  BlobStream: TStream;  //数据库 Blob流
begin
  FDquery1.Open('select * from Images where id=101 ');
  if not Query.IsEmpty then      begin
      BlobStream := FDQuery1.CreateBlobStream(FDQuery1.FieldByName('Image'), bmRead);        // 获取BLOB流

      BlobStream.Position := 0; // 确保流位置在开头
      Image1.Picture.LoadFromStream(BlobStream);    //将 流数据 导入到 Image1

      BlobStream.Free;
  end         else          begin
      ShowMessage('未找到指定ID的Jepg文档');
  end;
end;

 简单点,可以用DBImage1代替Image1

更新图像到数据库

var
    FileStream: TFileStream;
begin
    FileStream := TFileStream.Create('9.jpg', fmOpenReadWrite);
     adoquery1.Close;
     adoQuery1.SQL.Text:='UPDATE Images SET image = :photo WHERE ID = 1';    // 进行插入操作
     adoQuery1.ParamByName('photo').LoadFromStream(FileStream,ftBlob);
     adoquery1.ExecSQL;
    FileStream.Free;

    FDQuery1.Refresh;
end;