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为空,求各位大虾帮忙
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为空,求各位大虾帮忙
procedure TBlobField.LoadFromFile(const FileName: string);
var
Stream: TStream;
begin
Stream := TFileStream.Create(FileName, fmOpenRead);
try
LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
把STREAM存入ORACLE的bLOB字段中?
myPicture:TJPEGImage;
mem:TMemoryStream;
只定义mem一个就行了,myPicture多余插入SQL语句用参数形式:
sql.Add('insert into imagetest (imgid,imgsize) values(1,:mem)');
Parameters.ParamByName('mem').Assign(mem);
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;
Parameters.ParamByName('mem').LoadFromStream(mem);出错在这句
TBlobField(Parameters.ParamByName('mem')).Assign(mem);
Tpersistent Tmemorystream 不对应
Parameters.ParamByName('mem').LoadFromStream(mem,ftBlob);