如何在数据库里存取Jpeg图片    (100分)

  • 主题发起人 主题发起人 yyh0393
  • 开始时间 开始时间
Y

yyh0393

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位:
如何把Jpeg格式的图片存入到Access数据库的(OLE对象)字段里,希望能给详细的代码。谢谢!!!
 
DBImage1.CopyToClipboard;
DBImage1.PasteFromClipboard;
data1.q_gszl.Post;
 
Fieldbyname('field').loadfromstream(...);
 
procedure TForm1.Button1Click(Sender: TObject);
var
Picture1:TPicture;
begin
try
try
Picture1:=TPicture.Create ;
if OpenPictureDialog1.Execute then
begin
Picture1.LoadFromFile(OpenPictureDialog1.FileName);
Table1.Append ;
Table1.FieldByName('picture').Assign(picture1);
Table1.Post ;
Showmessage('成功');
end;
finally
Picture1.Free ;
end;
except
showmessage('失败');
end;
end;
我的代码是这样的,但不行请各位指教。错误提示(Projext Projext1.exe raised exception class EDBEngineError with message Invalid BLoB length)
 
楼上的:hbezwwl麻烦你能否把代码详细点,我对stream(流)不熟,谢谢!!!!!!!!
 
这样好像不行的,我这里有一段代码,你看看吧,虽然也是抄来的,但还有点用。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=463502
来自mingkai_li
调入image1
if OpenPictureDialog1.execute then
MyFileName:=OpenPictureDialog1.FileName;
if FileExists(MyFileName) then begin
image1.Picture.loadfromfile(myfilename);
保存
procedure saveimage;
Var
BlobStream:TBlobStream;
JpegImage:TJpegImage;
begin
try
with Frm_DossierView.query1 do
try
JpegImage:=TJpegImage.Create;
BlobStream:=TBlobStream.Create(TBlobField(FieldByName('WSNR')),bmWrite);
BlobStream.Position:=0;
// BlobStream.Truncate;
JpegImage:=TJpegImage(Frm_DossierView.image1.Picture.Graphic);
JpegImage.SaveToStream(BlobStream);
finally
if Not Assigned(BlobStream) then BlobStream.Free;
if Not Assigned(JpegImage) then JpegImage.Free;
end;
except
end;
end;


读取

procedure loadimage;
Var
BlobStream:TBlobStream;
JpegImage:TJpegImage;
begin
try
BlobStream:=TBlobStream.Create(TblobField(Frm_DossierView.Query1.FieldByName('WSNR')),bmRead);
if BlobStream.Size>0 then
begin
JpegImage:=TJpegImage.Create;
JpegImage.LoadFromStream(BlobStream);
Frm_DossierView.Image1.Picture.Assign(JpegImage);
end
else
Frm_DossierView.Image1.Picture:=nil;
Finally
if Not Assigned(BlobStream) then BlobStream.Free;
if Not Assigned(JpegImage) then JpegImage.Free;
End;
end;

我试过了,还行。不过有时候会出现,blob field has been modified 的错误,
那是在读取时。
 
谢了:fzzz_radium 我试试
 
后退
顶部