sql - Delphi加载图像保存为sql数据库中的blob

标签 sql image delphi blob

我正在尝试从之前保存在 SQL 数据库中的图像 blob 加载图像控件。我已经测试了很多方法,但无法使其工作。图像 blob 保存为:

qry.SQL.Text := 'update tbl set pic = :blobVal where id = :idVal';
qry.Parameters.ParamByName('blobVal').LoadFromFile('c:\sample.jpg', ftBlob);
qry.Parameters.ParamByName('idVal').Value := 1;

有什么建议吗?

最佳答案

这里有很多关于将图像加载到数据库的步骤,但我没有找到带有更新或插入参数的步骤。

您可以简单地将图形对象分配给您的参数。 如果你想存储不同的图形类型,你应该添加一列 保留应存储哪种图形的信息(例如 jpeg、bmp、png)。 如果您想从数据库中检索图片,则能够创建所需的 TGraphic 类后代。

uses jpeg, pngimage;

type
 TitTYPES=(itJPG,itPNG,itBMP);

procedure TDEMO.Button1Click(Sender: TObject);
var
 jp:TJpegimage;
 g:TGraphic;
begin

  jp:=TJpegimage.Create;
  try
    ads.Close;
    jp.LoadFromFile('C:\Bilder1\PIC.jpg');
    ads.SQL.Text := 'Insert into IMGBlob (ID,Blob,typ) Values (:ID,:BLOB,:typ)';
    ads.Parameters[0].Value := 1;
    ads.Parameters[1].Assign(jp);
    ads.Parameters[2].Value := itJPG;
    ads.ExecSQL;

    ads.SQL.Text := 'Select * from IMGBlob where ID=:ID';
    ads.Parameters[0].Value := 1;
    ads.Open;
    try
      case TitTYPES(ads.FieldByName('typ').AsInteger) of
           itJPG: g:=TJpegimage.Create;
           itPNG: g:=TPNGImage.Create;
           itBMP: g:=TBitmap.Create;
      end;
    g.Assign(ads.FieldByName('Blob'));
    Image1.Picture.Assign(g);
    finally
      g.Free;
    end;
  finally
    jp.Free;
  end;
end;

关于sql - Delphi加载图像保存为sql数据库中的blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26103437/

相关文章:

SQL Server - 选择左连接 NULL 记录 WHERE 条件

html - CSS 中的双边框

java - 使用 Eclipse 导入图片

delphi - 关注 TImage 上的关键事件?

sql - 如何在 PostgreSQL 中使用 CASE 语句替换文本数组中的空白行?

c# - 如何从 C# 中准确处理 SQL 的批处理分隔符

sql - 在 oracle 9i 中查找可以为空的列会抑制列的索引吗?

html - CSS 将切片图像读入 Dreamweaver Div

delphi - 比较两个文件的名称(完整路径)的真正快速功能

Delphi:右括号可选?