当前位置:主页   - 电脑 - 数据库
Access之图像文件的存储
来源:网络   作者:IT专家网 cyw    更新时间:2010-07-07
收藏此页】    【字号    】    【打印】    【关闭

一张图片说明往往胜过千言万语,不过却会占用相当多的存储空间。

人们越来越热衷于在数据库中存储图像文件。例如销售产品的说明图片、工程设计图纸、公安部门存储身份证照片和指纹图像、图书馆数据库里的动植物标本照片、商品图片等等,类似的例子举不胜举。其中有很多存储在数据库里的图像是可以通过浏览器访问,提供给很多人使用的。

想要将图片存储在数据库里有好几种方法。本文将为大家讲述如何在Access里存储图像,不过您也可以稍加变通扩展到其他不同的数据库引擎。

数据库里的图像

正如文本存储在文本框、日期存储在日期栏一样,图像也需要特定文件类型来存储。在SQL Server中,虽然被称为“图像”文件,不过在其他的数据库引擎中,可能有不同的名字,包括那个听起来很神气的二进制大型对象(BLOB)数据类型。在Access中,图像文件以OLE类型字段进行存储。这里为对细节感兴趣的人总结了用OLE类型存储图像文件的利弊。

以OLE对象来存储图像会遇到一个问题,那就是Access数据库膨胀的速度急剧加快,从而使运行速度减慢。特别是当您存储GIF和JPEG格式文件时尤为明显,因为OLE会为每一个图像文件另外创建一个包含显示信息的位图文件;也就是说,如果您添加一个1MB的图像文件,那么实际占用的数据库空间要比1MB大多了。这些附加文件比原始文件的容量更大,从而使您的数据库变得臃肿不堪。牢记一点,Access数据库的最大存储空间只有2GB。如果要存储大量图像,很快就会达到这一存储极限,失去可用空间。不过,除了要小心数据库的膨胀之外,这确实是一个用于存储少量图像的简便之法。而且,如果您要移动数据库,这些存储在内的图像也会随之移动,不过在下面要讲到的方法中可能就不是这样了。

指向图像

我们还是使用OLE对象数据类型,不过在选择图像时使用“链接”选项(见后续实际步骤)。图像并非复制到数据库里,只是向数据库插入一个链接,链接到该图像。

这样做也是有利有弊。有利的方面显而易见,是数据库膨胀问题得到了缓解。如果您对其中存储在磁盘上的某个图像文件进行编辑,当您从数据库内部查看该图像时,就能看到修改的痕迹。这种特性是好是坏取决于您想要实现的功能。

不过,如果您想把Access文件转移到另外一台计算机,这些图像就无法跟着一起转移了。而且要更新两者之间的链接可能很困难,因为必须存放在Access某处的指向图像的指针(如C:MyPicsTravelslake.jpg)无法随时用于编辑。

使用代码

除了用OLE对象字段,还可以使用文本字段。用这种方法,您不是存储图像,而是存储了该图像路径的文本。您可以使用VB代码来控制图像的调用,以及图像显示的方式。这种做法可以节省大量存储空间,因为不管图像有多大,您存储的都只是一串文本字符串。

此外,如果您把图像文件转移到另外的计算机,就算您存储的图像文件都不在同一个文件夹,您要做的只是在文本字段运行一个更新查询把指针指向新的位置。不过不足之处就是必须会用代码(当然,这取决于用户的专业知识水平)。如果需要存储的图像数量较多,建议使用此方法。

花钱购买具有额外功能的控件

您可以花钱为您的数据库添加新功能,用来处理和应用图像文件,如DBPix等。必须得承认,Access的图像处理功能并不能给您留下什么深刻印象,像对JPG文件的支持就非常弱。不过将这些文件存储在Access中还是没问题的,只是无法在某种形式下显示出来,至少默认设置下是不行的。要显示这些常见类型的图像文件就必须安装其他软件。

虽然有很多不足,但存储和检索这些图像文件的过程倒是非产容易。下面我们就来看看具体操作的方法。

进入实际应用阶段

首先,创建一个表,添加一个OLE对象数据类型的字段。您会发现几乎没有什么可供设置的属性。接着点击“自动窗体”按钮,创建一个基于该表的默认窗体。奇怪的是,您在窗体里可以获得比在表里更多的图像属性控制权。如右击控件,您会找到可供设置的属性。现在,右击图像控件,选择“插入对象”,然后单击“由文件创建”的单选按钮。从这里开始您就可以选择是把图像嵌入到数据库还是链接到数据库。您还可以浏览并选择图像文件。

不管您是将其嵌入还是将其链接,JPEG文件都不会出现在该控件里。不过,如果您双击控件,就会打开一个包含了图像的应用程序。另一方面,BMP格式的图像文件则可以在窗体里显示。

用这种方法来添加图像文件会比较繁琐,不过您还可以将图像文件拖放到控件上,这样会快很多。虽然对于Access对JPEG文件的支持问题有点吹毛求疵,不过,在Access里处理图像文件已经是非常简单容易的了。

输入和存储条形码

在数据库中存储物品的条形码就像存储图像一样越来受到大家重视。这在商品经济发达的今天倒是显而易见的。在商品出售之前,其上的条形码需要被扫描到销售点的数据库里。其实整个过程并不困难。只要您有合适的扫描仪就没问题。

可以这样想,我们通常用的输入设备是键盘。当光标出现在某个区域时我们可以打字,这样就会在屏幕上出现字符。键盘可以是USB设备,条形码扫描仪也可以制成USB设备。所以条形码扫描仪的制造商就把他们做成像键盘一样的USB简单输入设备。就像您可以安装两套都能用鼠标设备一样,您也可以安装两个均可用的“键盘”,把条形码读取器当成另外一个键盘一样正常操作数据库,把光标从一个字段移动到另一个字段。当光标移动到条形码字段时,您只要拿起读码器,按下按钮,过一会条形码上的数字就会在字段中。相当简单易行。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明