sql - 使用 sql 参数插入/更新 TBlobfield(又名图像)

标签 sql image delphi parameters blob

我想使用 sql 将图像存储在数据库中,但似乎无法让它工作:

qry.SQL.Clear;
qry.Sql.Add('update tbl set pic = :blobVal where id = :idVal');   
qry.Parameters.ParamByName('idVal')._?:=1;

.Parameters 没有像 .Param 那样的 .asinteger,但是 .Param 与 TADOquery 不兼容 - 我尝试过的解决方法:

a_TParameter:=qry.Parameters.CreateParameter('blobval',ftBlob,pdinput,SizeOf(TBlobField),Null);
a_TParam.Assign(a_TParameter);
a_TParam.asblob:=a_Tblob;
qry.ExecSql; 

这也不起作用:

qry.SQL.Clear;
qry.Sql.Add('update tbl set pic = :blobVal where id = 1')
qry.Parameters.ParamByName('blobVal').LoadFromStream(img as a_TFileStream,ftGraphic);//ftblob 
//or 
qry.Parameters.ParamByName('blobVal').LoadFromFile('c:\sample.jpg',ftgrafic);//ftblob
qry.ExecSql;

最佳答案

应该是这样的:

qry.Parameters.Clear; 
qry.Parameters.AddParameter.Name := 'blobVal';
qry.Parameters.ParamByName('blobVal').LoadFromFile('c:\sample.jpg', ftBlob);
// or load from stream: 
// qry.Parameters.ParamByName('blobVal').LoadFromStream(MyStream, ftBlob);
qry.Parameters.AddParameter.Name := 'idVal';
qry.Parameters.ParamByName('idVal').Value := 1;
qry.SQL.Text := 'update tbl set pic = :blobVal where id = :idVal';    
qry.ExecSQL;

从数据库读回 BLOB:

qry.SQL.Text := 'select id, pic from tbl where id = 1';
qry.Open;
TBlobField(qry.FieldByName('pic')).SaveToFile('c:\sample_2.jpg');

关于sql - 使用 sql 参数插入/更新 TBlobfield(又名图像),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19115821/

相关文章:

sql - 从sql表中提取行数

sql - 请查看我的数据库模式 - 需要输入

德尔福日/周计划器

delphi - 如何让多个DLL实例能够互相访问?

mysql - 即使mysql没有对应的结果,如何获取计数?

sql - postgresql : xml parsing : xpath return only one record, 其中 xml 包含 3 条记录

image - 如何在 Flutter 中重叠两个小部件?

css - 调整 ionic 卡中的图像大小

python - 如何使用opencv丢弃图像的边缘?

Delphi 2009泛型编译问题