小编Ray*_*man的帖子

使用sql参数插入/更新TBlobfield(aka图像)

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

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

.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; 
Run Code Online (Sandbox Code Playgroud)

这也不起作用:

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;
Run Code Online (Sandbox Code Playgroud)

sql delphi parameters blob image

5
推荐指数
1
解决办法
1万
查看次数

Delphi ADOQuery在另一个ADOQuery插入之后没有拿起记录

我不确定为什么会这样,所以我将简要解释一下情况(应该很容易理解):

Form1一个执行sql select语句并在通过TDataSource组件链接到ADOQuery1组件的dbgrid上显示它的过程:

procedure form1. Selectp;
begin
   ADOQuery1.Active:=false;
   ADOQuery1.SQL.Text:='select * from tbl';
   ADOQuery1.Active:=true;
end;
Run Code Online (Sandbox Code Playgroud)

Form1有一个按钮,可以打开一个新表单来输入记录字段:

procedure form1. buttonaddrecordClick(Sender: TObject);
var
form2:Tform;
begin
   form2:=Tform2.Create(nil); 
   try
      form2.ShowModal; 
   finally
      form2.Release; 
   end;
   selectp;//executes but new record doesn’t show up although in database;
end;
Run Code Online (Sandbox Code Playgroud)

Form2有一个过程,通过form2.ADOQuery2将值插入数据库.

procedure form2.Insertp;
begin
    ADOQuery2.Active:=false;
    ADOQuery2.SQL.Text:='insert into tbl (field1) values ('''+ sfield +''')';
    ADOQuery2.ExecSql;
    ModalResult := mrOk;
end;
Run Code Online (Sandbox Code Playgroud)

如果我在form1上放置一个按钮来运行selectp,我必须在新记录显示之前按下它2次以上但是在buttonaddrecord中showmodal之后调用selectp多少次并不重要新记录没有出现.

造成这种情况的原因是什么以及如何纠正?

sql delphi ado

1
推荐指数
1
解决办法
2195
查看次数

标签 统计

delphi ×2

sql ×2

ado ×1

blob ×1

image ×1

parameters ×1