提高性问题: 为什么把JPG存到ACCESS2k OLE对象 会变大?

IT-司马青衫
壹号网络官方账号
2003-09-12 11:32:13


在BCB中采用下术方法存入图片,不过显示代码不用写了,DBImage自动显示.

像片体积:11574字节,反复测试得出存入数据库后图像体积:28672字节整整多了147.72%.

if(OpenPictureDialog1->Execute());
{
AnsiString MyFilesExtension = UpperCase(ExtractFileExt(OpenPictureDialog1->FileName));
if(MyFilesExtension==".JPG")
{
TJPEGImage *jpg=new TJPEGImage();
jpg->LoadFromFile(OpenPictureDialog1->FileName);
Clipboard()->Assign(jpg);
DBImage1->DataSource->DataSet->Edit();
DBImage1->PasteFromClipboard();
DBImage1->DataSource->DataSet->Post();
delete jpg;
}
...全文
88 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
binbin 2003-09-13
  • 打赏
  • 举报
回复
OLE类型不同于一般的blob字段,虽然同样可以存放二进制数据,但还多了许多描述信息,即该二进制所属于应用程序等OLE信息.
你可以试验一下,在access中用OLE方式存放的OLE对象,双击后会自动打开相应的处理软件对该内容进行编辑.
你也可以直接使用OLE字段存放二进制文件而不要OLE信息,但是这样的话在access中双击此字段时会出现错误——因为access找不到OLE信息而无法打开其应用程序。
直接存放二进制文件可以这样做:
ADOQuery1->SQL->Text = "insert into table values('abc', :BlobField)";
ADOQuery1->Parameters->Items[0]->LoadFromFile("文件名", ftBlob);
ADOQuery1->ExecSQL();
hong668 2003-09-13
  • 打赏
  • 举报
回复
数据库作为一个容器去存放你的图相文件,但还有一个对这你这个图相文件的类型,存放的格式比如ASC还是二进制进行附加描述,就像一个数据包在网络中传输的时候,报文头部总是加上一些检验头。这是我的理解

1,178

社区成员

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

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