二进制类型数据库读取文件(200分)

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

thend

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠,我想把一个图片作为二进制文件放入access数据库里,然后用的时候再把这个图片释放到某个文件夹或者是路径中去,不知如何下手。
请教代码思路或者是例子程序,数据库是access!
 
可以用数据流
TBlobStream
 
在下菜鸟一个,您说的我不是太明白,不知有没有例程啊。
不好意思,见笑见笑。
 
这是access测试过的保存图片和显示图片的代码。你参考。
procedure savepicture;
var
BS:TADOBlobStream;
begin
Query1.Edit;
BS:=TADOBlobStream.Create(TMemoField(Query1.fieldbyname('图片')),bmWrite);
Image1.Picture.Graphic.SaveToStream(BS);
BS.Free;
Query1.Post;
end;

刚才测试通过的代码
procedure disppicture;
var MemStrm:TMemoryStream;
begin
with datam.DataM1,input_Form do
begin
MemStrm:=TMemoryStream.Create;
TBlobField(Query2.fieldbyname('PHOTO')).SaveToStream(MemStrm);
MemStrm.Position:=0;
Image1.Picture.Graphic.LoadFromStream(MemStrm);
MemStrm.free;
end;
end;
 
参考"
uses jpeg;
保存Image1中的图象至数据库 :
var
Ms:TmemoryStream;
jpg:Tjpegimage;
begin
ms:=TmemoryStream.Create;
Jpg.Assign(Image1.Picture.Graphic);
Jpg.SaveToStream(Ms) ;
Ms.Position :=0;
ADOquery1.append;
TBlobField(ADOquery1.FieldByName('img')).LoadFromStream(Ms);
ADOquery1.Post;
Ms.Free ;
jpg.free;
end;
从数据库中读取图象到image2中:
Var
Ms:TStringStream;
jpg:Tjpegimage;
begin
Ms:=TstringStream.Create('');
TBlobField(ADOquery1.FieldByName('img')).SaveToStream(Ms);
Ms.Position :=0;
Jpg.LoadFromStream(Ms);
Image2.Picture.Assign(Jpg);
Ms.Free;
jpg.free;
end;


数据表字段类型设置为image,如果是.JPG的图片,要转换为.BMP格式的来存储,方便ADO控件读取,当然也可以直接存储.JPG格式的,看情况定.
 
后退
顶部