图像问题(存取) ( 积分: 100 )

  • 主题发起人 主题发起人 tlldelphi
  • 开始时间 开始时间
T

tlldelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我想通过sql语句存取jpg图像,在网上看到了以下代码(做了一下修改),但出现错误了:update语法错误。怎么回事呢?请各位帮忙
各位如果有此方面的解决方法,请给出,谢谢了
var
M:TMemoryStream;
begin
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
if Application.MessageBox('是否存入数据库?','提示',MB_OKCANCEL)<>1 then Exit;
M:=TMemoryStream.create;
Image1.Picture.graphic.SaveToStream(M);
M.Position:=0;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='update 1 set image=:image where id=:id';
adoquery1.Parameters.ParamByName('id').value:='123';
ADOQuery1.Parameters.ParamByName('image').LoadFromStream(M,ftBlob);
ADOQuery1.Prepared;
ADOQuery1.ExecSQL;
M.Free;
end;
 
我想通过sql语句存取jpg图像,在网上看到了以下代码(做了一下修改),但出现错误了:update语法错误。怎么回事呢?请各位帮忙
各位如果有此方面的解决方法,请给出,谢谢了
var
M:TMemoryStream;
begin
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
if Application.MessageBox('是否存入数据库?','提示',MB_OKCANCEL)<>1 then Exit;
M:=TMemoryStream.create;
Image1.Picture.graphic.SaveToStream(M);
M.Position:=0;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='update 1 set image=:image where id=:id';
adoquery1.Parameters.ParamByName('id').value:='123';
ADOQuery1.Parameters.ParamByName('image').LoadFromStream(M,ftBlob);
ADOQuery1.Prepared;
ADOQuery1.ExecSQL;
M.Free;
end;
 
ADOQuery1.SQL.Text:='update 1 set image=:image where id=:id';
----
是不是表名错了!
 
好像ADOQuery不能使用不返回结果的语句吧,用ADOCOMMAND就可以。
 
dm.ado.Close;
dm.ado.SQL.Clear;
dm.ado.SQL.add('update 1 set image=:image');
// dm.ado.parameters.parambyname('id').Value:=TreeUtil.getSelNodeIndex;
dm.ado.Parameters.ParamByName('image').Value:=OpenPictureDialog1.FileName;
dm.ado.Prepared;
dm.ado.ExecSQL;这样也不行呀
 
&quot;'update 1 set image=:image'&quot;
===
你的数据库存在 '1' 这样的表的命名吗?
 
ADOCommand1.CommandText:='';
ADOCommand1.CommandText:='update test1 set name=:aaa where id=:bbb';
ADOCommand1.Parameters.ParamByName('aaa').Value:=Edit1.Text;
ADOCommand1.Parameters.ParamByName('bbb').Value:=Edit2.Text;
ADOCommand1.Execute;
挺好的呀,没出现问题。你上面那个1是表名吗?
 
sql.add('update 1 set matter=:matter where id=:id');
parameters.parambyname('matter').Value:=richedit1.Text;
parameters.parambyname('id').Value:=TreeUtil.getSelNodeIndex;
execsql;
我句话就没错呀,
 
不会吧,没人了?
 
ADOQuery1.Parameters.ParamByName('image').LoadFromStream(M,ftBlob);
ADOQuery1.Parameters.ParamByName('image'):=.....
应是这样的格式啊,不然怎么符值?
 
ParamByName('image').dataType := ftBlob
 
插入新信息可以
ADOQuery1.FieldByName('id').AsString:=idEdit.text;
TBlobField(ADOQuery1.FieldByName('image')).LoadFromStream(M);
如果只是插入一条全新信息,这样就可以了
 
将ADOQuery1.SQL.Text:='update 1 set image=:image where id=:id';
改为
ADOQuery1.SQL.Text:='update 1 set image=image where id=id';

SQL语句中的赋值号是=不是:=
 
后退
顶部