首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

DELPHI将图片保存到ORACLE下,二进制流保存到变量出现有关问题

2012-03-19 
DELPHI将图片保存到ORACLE下,二进制流保存到变量出现问题procedure TForm1.Button1Click(Sender: TObject)

DELPHI将图片保存到ORACLE下,二进制流保存到变量出现问题
procedure TForm1.Button1Click(Sender: TObject);
var
  myPicture:TJPEGImage;
  mem:TMemoryStream;

begin
  mem:=TMemoryStream.Create;
  myPicture:=TJPEGImage.Create;
  if(OpenDialog1.Execute()) then
  begin
  mem.LoadFromFile(OpenDialog1.FileName);
  myPicture.LoadFromFile(OpenDialog1.FileName);
  myPicture.SaveToStream(mem);



  with ADOQuery1 do
  begin

  close;
  sql.Clear;
  sql.Add('insert into imagetest (imgid,imgsize) values(1,"+mem+")');
  // TBlobField(ADOQuery1.FieldByName('imgsize')).SaveToStream(mem);
  ExecSQL;
  end;
  mypicture.Free;
  mem.Free;
end;
end;
其中myPicture.LoadFromFile(OpenDialog1.FileName);
  myPicture.SaveToStream(mem);
是想将用OpenDialog打开的图片二进制流存入变量mem中,但运行时mem为空,求各位大虾帮忙

[解决办法]
TBlobField(ADOQuery1.FieldByName('imgsize')).LoadFromFile();

会调用LoadFromStream
procedure TBlobField.LoadFromFile(const FileName: string);
var
Stream: TStream;
begin
Stream := TFileStream.Create(FileName, fmOpenRead);
try
LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
[解决办法]
帮你整理一下,自己测试

Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);var  mem:TMemoryStream;begin  mem:=TMemoryStream.Create;  try  if OpenDialog1.Execute then  begin    mem.LoadFromFile(OpenDialog1.FileName);    mem.Position:=0;    with ADOQuery1 do    begin      close;      sql.Clear;      sql.Add('insert into imagetest (imgid,imgsize) values(1,:mem)');      Parameters.ParamByName('mem').Assign(mem);      ExecSQL;    end;  end;  finally    mem.Free;  end;end; 

热点排行