DELPHI开发中能否将JPEG图片保存到ORACLE数据库内,如何保存?

dgdlking 2003-06-19 08:26:15
ORACLE中存取BMP图片是很比较简单的,而且方法也有不只一种,
可以通过image.picture.bitmap.loadfromfile(filename)和stream的方法
用stream的方法可以这样:
Stream:=FDataLink.DataSet.CreateBlobStream(FDataLink.Field,bmReadWrite);
try
bmp.SaveToStream(stream); //save to database
finally
stream.Free;
end;
这样是可行的,但你这里也只能存BMP图片(我试过),在程序中我有一个TDBimage控件,请问如何能将TDBimage中的jpeg图片存到ORACLE数据库中,并能从数据库中读取出来,我试过了下面的方法来存取JPEG图片,
TDBimage.picture.graphic.savetostream(stream)
TDBIMAGE.picture.graphic.loadtostream(stream)
保存成功,但从数据库load时却报错说地址访问出错,
Access violation at address 0044BF25 in module 'jsjglxt.ext' .
Read of address FFFFFFFF.
到底ORACLE能否存取JPEG图片,DELPHI程序中又怎样存取?
希望能得到各位高手的帮助。

...全文
54 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyue 2003-06-19
  • 打赏
  • 举报
回复
存到数据库
var
pjpg:tjpegimage;
pic:TMemoryStream;
begin
pjpg:=tjpegimage.Create;
pjpg.LoadFromFile(F:\JPG.jpg);
pic:=TMemoryStream.Create;
pjpg.SaveToStream(pic);
pic.Position:=0;
TBlobField(dataset.FieldByName('Img')).LoadFromStream(pic);
dataset.post;
pic.Free;
pjpg.free;
end;
从数据库取出
var
pjpg:tjpegimage;
pic:TMemoryStream;
begin
pjpg:=tjpegimage.Create;
pic:=TMemoryStream.Create;
TBlobField(dataset.FieldByName('Img')).savetoStream(pic);
pic.positon:=0;
pjpeg.LoadFromStream(pic);
image.graphi.bmp.assign(pjpeg);
end;

end;
m_leaner 2003-06-19
  • 打赏
  • 举报
回复
我好象回答了一个,怎么还有?
TDBimage1.savetoStream(s);
TBlobField(yourblobfield).loadfromstream(s);
///////////////
TBlobField(yourblobfield).savetostream(s);
TDBimage1.loadfromStream(s);
dgdlking 2003-06-19
  • 打赏
  • 举报
回复
我用的是long raw的数据类型,我几百K的BMP图片都能存取,所以应该不存在这个问题
要是你试过存取成功的话,能否说说你的具体方法?
ddvboy 2003-06-19
  • 打赏
  • 举报
回复
可以保存但要看你选择什么字段
如果用的是图型的字段类型它的存放大小是有限制的
你可以放个小图试试

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧