Access之图像文件的存储

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

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

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

数据库里的图像

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

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

指向图像

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

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

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

使用代码

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

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

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

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

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

进入实际应用阶段

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

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

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

输入和存储条形码

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

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

时间: 2024-08-30 21:59:25

Access之图像文件的存储的相关文章

vb datagridview已连接access后遇到的存储问题,求解决~

问题描述 在使用vs2013-vb窗体应用编写某列表的时候.用到datagridview控件,现已将datagridview链接access数据库,且可建立正常操作.遇到的问题是,在datagridview控件上已显示添加了的项目没有同步到access数据库中.现想在关闭窗体时,将当前的信息保存到access(mdb)中,应该怎样做?可能没说清楚哈,就是在每次关闭窗体之后,加入数据库的东西并没有保存,重新启动程序,数据库又是空白.我在添加到数据库的操作代码是:PlaylistDataSet.表1

Access数据有效性检查

开发一个好的数据库管理系统,关键是要确保录入数据的完整性和准确性.Access提供了很多检查录入数据有效性的手段,笔者这里就简单介绍两种常用的方法. 一. 利用字段属性 1. 数据类型属性 :数据类型决定了用户能保存在此字段中值的种类,如果用户键入的数据与字段规定的类型不一致,Access就不会存储该数据.如"日期/时间"字段,只允许输入有效的日期与时间格式. 2. 字段大小属性 :对于"数字"型字段,通过设置字段的大小控制输入值的类型和范围:而对"文本&

SQL Server存储图像数据的策略与方法

server|策略|数据 目前对于图像数据的管理大都采用表+实体的方法,即图像数据以文件形式存放于指定的计算机目录下,在数据库表中只反映图像数据文件的存储路径.这种管理模式,给数据的维护增加了难度,同时,也给数据的安全带来一定的隐患.因此,要真正做到各类数据在数据库中安全管理,研究和探索直接将图像数据存储在数据库关系表中的方法是非常必要的. 笔者在Visual Basic 6.0开发环境中,采用客户机/服务器的工作方式,针对SQL Server数据库关系表中存储图像数据的问题进行了初步探讨,提出

如何检查Access数据库的数据有效性

开发一个好的数据库治理系统,要害是要确保录入数据的完整性和准确性.Access提供了很多检查录入数据有效性的手段,笔者这里就简单介绍两种常用的方法. 一.利用字段属性 1.数据类型属性:数据类型决定了用户能保存在此字段中值的种类,假如用户键入的数据与字段规定的类型不一致,Access就不会存储该数据.如"日期/时间"字段,只答应输入有效的日期与时间格式. 2.字段大小属性:对于"数字"型字段,通过设置字段的大小控制输入值的类型和范围;而对"文本"

Access数据库的迁移问题探究

  因为业务信息系统软件之前设计的为Access数据库架构,经过一段时间的运营管理,发现Access数据库越来越不能支撑业务系统的运行管理.因此,考虑更换数据库. 抛弃Access数据库,首选MySQL数据库.MySQL虽体积小,但是功能够用,存储速度快,基本能满足升级改造的要求.从Access数据库迁移到MySQL数据库,通常要做哪些事. (1)迁移Access表到MySQL数据库中 对照Access数据库表,在MySQL数据库中建立同样一张表.之后,将Access数据表内容迁移到MySQL数

数据爆炸时代云计算厂商的对象存储“勇担当”

对象存储在企业级存储领域的应用处于早期阶段,但增长的趋势十分明显.IDC预测在2017年到2021年期间,全球软件定义存储市场的复合年增长率将达到13.5%,到2021年收入接近162亿美元. 自从20世纪90年代中期首次提出概念,对象存储已经成为最大规模应用的数据存储方法之一.在软件定义存储市场中,下一代云数据中心的要求正在有力地推动对象存储的发展. 毋庸置疑,我们现在处于一个数据爆炸的年代,特别是非结构化数据(图片.视频.归档以及企业级备份等各种数据)成为企业数据的重要组成部分.这种海量数据

使用Mybaits存储图片存储到数据库中代码

问题描述 使用Mybaits存储图片存储到数据库中代码 使用Mybaits存储图片存储到数据库中代码 先要将其转换成二进制 解决方案 用C#实现图片数据库存储与显示存储图片到access数据库中java存储图片到数据库 解决方案二: 将图片流转换成byte[]

IBM力推SmarCloud云存储服务

不管是私有云.公共云还是混合云,都有一个共同的目标,那就是准备服务形式的某些信息技术.利用这种服务,非IT专业人士(比如部门管理员)不需要IT专业人士的帮助也能准备IT资源. 这会带来更多的好处. 例如,非IT专业人士不需要迁就IT专业人士的优先等级了,因为某些支持对于非IT专业人士来说的优先等级为A,而对于IT专业人士来说优先等级可能只是C. 另外,这样的服务可以让IT工作者更好地利用他们自己的时间,将主要精力放在能够为企业创造更高价值的任务上. 然而,虽然企业用户肯定能够从这些服务中受益,包

个人网站安全 从数据库合理管理开始

数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常"看重"网站数据库. 数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常"看重"网站数据库. 对于个人网站来说,受到建站条件的制约,Access数据库成了广大个人网站站长的首选.然而,Access数据库本身存在很多安全隐患,攻击者一旦找到数据库文件的存储路径和文件