C/S中怎样在Access中存储图片?(100分)

  • 主题发起人 主题发起人 anda_sunyu
  • 开始时间 开始时间
A

anda_sunyu

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样可以在Access中存储图片,用C/S结构访问图片?
不要存储图片的路径。
 
以二进制流的形式,上传,并写入数据库,数据库值设为OLE就可以啦!
 
with query do begin
close; sql.clear;
sql.add('insert into table1(picfld,...) values(:,...)');
params[0].loadfromfile('c:/test.jpg',ftblob);
try execsql except end;
//以上是插入
sql.clear; sql.add('select picfld from table1');
try open except end;
if not eof then tblobfield(fields[0]).savetofile('c:/test1.jpg');
//以上是读出
close
end
 
通过c/s存储图片的话,就可以访问。
用dbimage和openpicturedialog控件即可!
adotabel1.Append;
openpicturedialog1.Execute;
try
dbimage1.Picture.LoadFromFile(openpicturedialog1.FileName);
except
adotabel1.Cancel;
end;
 
从access中读取图片(jpeg或bmp都可以)
procedure loadpicture();
var
MyJPEG : TJPEGImage;
MS: TMemoryStream;
begin
MS:=TMemoryStream.Create;
MyJPEG:=TJPEGImage.Create;
Main.DAOQuery1.Open;
try
TBlobField(Main.DAOQuery1.FieldByName('photo')).SaveToStream(MS);
MS.Position:=0;
MyJPEG.LoadFromStream(MS);
DBImage1.Picture.Bitmap.Assign(MyJPEG);
finally
MS.Free;
MyJPEG.Free;
end;
end;

保存图片到access
procedure SavePicture();
var
MyJPEG : TJPEGImage;
MS: TMemoryStream;
begin
MS:=TMemoryStream.Create;
MyJPEG:=TJPEGImage.Create;
try
MyJPEG.Assign(DBImage1.Picture.Graphic);
MS:=TMemoryStream.Create;
MyJPEG.SaveToStream(MS);
MS.Position:=0;
TBlobField(Main.DAOQuery1.FieldByName('photo')).LoadFromStream(MS);
finally
MS.Free;
MyJPEG.Free;
end;
end;
 
with query do begin
close;
sql.clear;
sql.add('insert into table1(Pic,...) values(:Pic,...)');
params[0].loadfromfile('c:/test.jpg',ftblob);
execsql;
 
wangxian11,你的方法怎么不能APPEND图片呀?
 
为什么修改可以,新增就出错?
 
后退
顶部