数据分配及存取

2024-08-14

数据分配及存取(精选3篇)

数据分配及存取 篇1

1 引言

随着信息技术的飞速发展和数据库技术的广泛应用,数据库中存储的数据种类愈加丰富。在多媒体技术日益成熟的今天,利用数据库存取图像数据,在社会各领域有着广泛的应用前景。

数据库图像存取主要有间接存取和直接存取两种方法。间接存取方法并不直接将图像存入数据库,而是在数据表中用专门字段存储图像文件的路迳和文件名,图像则以文件形式存放在指定的目录下,使用时根据数据库字段提供的信息找到所需图像文件并进行加载。这种方法使用相对比较简单,但由于图像与数据库分离,导致数据的安全性降低,数据存储的不同步也给系统维护、管理带来一定困难。直接存取方法是将图像数据存储在数据库关系表中,这样不仅可以保证图像数据的一致性和安全性,还可以提高图像数据的可用性和可伸缩性。图像数据存取将是图像数据库技术发展的主要方向。当前由于大多数据库系统并不提供对图像数据存取的支持,直接存取法的实现须借助第三方开发工具来完成。

2 图像字段的存储机制

存储在数据库中的数据有两种:格式化数据和非格式化数据。其中数字、字符为格式化数据;图形、图像、声音、视频等为非格式化数据,这是一种大容量的二进制数据(BLOB—Binary Large Object称为二进制大对象)存储类型,这种数据具有数据量大、处理复杂等特点。这两种格式的数据其存储方式完全不同,格式化数据直接存储在记录的字段中,可以输入、显示和编辑;作为非格式化数据的图像,存储时不是作为数据记录的一部分被存入字段,而是存储在系统专门开辟的存储页面中,其字段内存储的仅是一个16字节指针,它指向图像数据的实际存储位置。在数据表中,无法对这样的数据实施操作,如输入、编辑、显示等。因而,图像数据存取是数据库操作中的一个难点。

3 图像数据存取技术

3.1 ADO数据库访问技术

ADO是Microsoft数据库应用程序开发的新接口,是基于OLE DB模型之上的更高层应用。ADO用对象封装了OLE DB中所提供的接口,ADO的Field(域)对象对应于记录集对象中的一列,它提供了很多属性和方法(函数),但存取大容量的二进制数据(BLOB)主要用到GetChunk()和AppendChunk()两个函数。用ADO访问数据库,首先要创建连接(Connection)对象建立与数据源的连接,然后创建记录集(Recordset)对象,实现对数据库的访问。对于格式化数据,可用GetCollect()和PutCollect()函数读取和保存,从记录集中获取的数据值都是variant类型,使用时必须进行类型转换,保存时也必须先将数据转换成variant类型然后再写入。

3.2 BMP文件格式

BMP(位图)文件是Windows应用程序中使用较多的图形资源。BMP文件大体分为4个部分(如图1)。

第一部分为位图文件头BITMAPFILEHEADER,是一个长度固定为14个字节的结构体类型,其中数据成员WORD bfType用于指定文件类型,它的值必须为0x424D,即字符串“BM”,也就是说所有.bmp文件的头两个字节都是“BM”;DWORD bfSize指定文件大小,包括bfType的14个字节;DWORD bf OffBits表示从文件头到实际位图数据的偏移字节数。

第二部分为位图信息头BITMAPINFOHEADER,是一个长度固定为40个字节的结构体类型,用于指定与图像有关的信息,如图像高度、宽度、颜色位数等。

第三部分为调色板,它是一个用于描述像素颜色分量的结构体数组。

第四部分是实际的图像数据。

3.3 用VC++实现图像数据存取

以下结合本人开发的“高校人事信息管理系统”,说明应用程序中存取数据库图像的实现方法。系统开发工具为VC++6.0,用Access 2003数据库存放人事信息数据,采用ADO方式连接数据库。系统的“人员简历管理”模块,可添加、删除、修改、查找、显示个人简历,通过拖动滚动条,可实现简历表的上下、左右滚动(如图2)。简历表中的人员照片,涉及到图像数据的存储、读取和显示。

3.3.1 图像存入数据库字段

在数据库的pj1表中,有一个“photo”字段,其属性设置为“OLE对象”类型,用于存放图像数据。BLOB对象的保存需调用AppendChunk()函数,AppendChunk()包含在Field对象中,原型为:HRESULT AppendChunk(const_variant_t&Data);其中Data为要写入的数据,从函数原型看出,存入图像的关键是要将字符类型的BMP数据转换VARIANT类型。具体做法是:从磁盘读取BMP文件并加载到内存缓冲区后,用SafeArrayCreate()函数创建一个SAFEARRAY结构体类型的安全数组,通过函数SafeArrayPutElement()将缓冲区数据写入该安全数组,再将数组值赋于VARIANT类型的变量,最后通过调用AppendChunk()函数,将图像数据存入“photo”字段。下列savephoto()函数中给出了保存BMP图像到数据库字段的关键代码。

3.3.2 读取数据库中的图像

读取“photo”字段中的BLOB数据,要用到Field对象的GetChunk()函数,该函数原型为:_variant_t GetChunk(long Length);调用函数时需给出“photo”字段中BLOB数据的实际长度,通过访问Field对象的ActualSize属性取得图像数据长度,GetChunk()函数被调用后,返回的数据值为VARIANT类型,这种类型的数据无法用于图像显示,为此调用SafeArrayAccessData()函数,可获得VARIANT变量中指向数据的char*类型的指针,然后将数据库中读取的数据复制到指定的内存缓冲区,以方便对其作进一步处理。下列Readphoto()函数给出了读取数据库中BLOB数据的关键代码。

3.3.3 图像显示

用GetChunk()读取的位图数据驻留在内存缓冲区,将这些数据转换成位图句柄HBITMAP后才可显示。具体过程为:取缓冲区中的位图文件头,依据BMP文件格式规定,判断开头的两个字节是否为“BM”,以此确定它是否为位图;从bfOffBits获取文件头到实际位图数据的偏移字节数,计算出实际位图数据的存放位置;调用CreateDIBitmap()函数,读缓冲区数据并创建设备相关位图DDB以供显示。函数BufToHbit()中给出了实现这一转换的关键代码。

图像数据读出并转换成位图句柄后,在ShowUserPhoto函数中将位图句柄输出到屏幕,然后在视图类的OnDraw()函数中调用它即可。

4 结语

数据库图像存取是一项比较复杂的技术,具有重要的实用价值和广泛的应用前景。用VC++存取数据库图像数据,主要使用了ADO的两个函数:AppendChunk()和GetChunk(),函数原型中涉及到VARIANT和_variant_t这两种数据类型,其中VARIANT是一个结构体类型,其内包含的联合体成员可用于存储各种类型的数据和指向各种数据类型的指针,用VARIANT定义的变量,在使用时应转换成所需类型;_variant_t是一个类,它封装了VARIANT结构。用:AppendChunk()函数写字段时,内存中的图像数据必须转换为VARIANT类型,这需借助于SAFEARRAY结构类型的安全数组;用GetChunk()函数读取图像字段后的返回值,也是VARIANT结构类型,需转换为位图句柄HBITMAP后方可显示于屏幕。

参考文献

[1]李鲲程.Visual C++打印编程技术与工程实践[M].北京:人民邮电出版社,2003.

[2]李博轩.Visual C++6.0数据库开发指南[M].北京:清华大学出版社,2001.

[3]萨师煊,王珊.数据库系统概论.第3版[M],北京:高等教育出版社,2000.

[4]希望图书创作室译.Visual C++6.0技术内幕.第5版[M],北京:希望电子出版社,2002.

[5]Visual C++6.0MFC类库参考手册.北京:人民邮电出版社,2002.

数据分配及存取 篇2

“文件存取”中常见的问题及教学对策  [文章作者]韦国 [文章来源] 常州市武进区奔牛实验小学   文件存取技能是信息处理的一项基本技能,但是往往因为觉得它简单而被忽视。我们在以前的教学中也发现一些学生的文件是空文档,有时几堂课下来的作业只有最后一次的,或者学生自己都找不到上节课的文档,分析其原因,不外乎这么几种情况:

1、 空文件覆盖

有的学生在保存完作业以后,不放心,会将它打开看看,结果打开发现是一个空文档,问其如何打开的,他说是用“保存”打开的。

2、 文件命名重复

有的学生每次的作业都用相同的字符(比如姓名)作为文件名,文档相互覆盖,前面的努力白费,结果一直只保留最后一次的文档。

3、 保存位置不清

有时作业要求学生从教师机上打开,学生完成作业后,习惯用“保存”命令保存,结果没有重新选择保存位置,没有真正保存,导致前功尽弃。有时学生作业完成后,随便选了一个位置保存,到下次继续作业时,找不到上次的内容,只能从头开始,浪费时间。

针对以上几种现象,我采取了以下教学对策:

一、 引导学生正确使用“保存”和“打开”命令。

由于学生刚接触文件存取时,只会注意“保存”,而对“打开”并不经意,久而久之,不管是查看还是保存,都使用“保存”命令。其实,教师必须在教学保存文件的同时,必须跟学生讲清,查看文件内容用“打开”,修改完文件以后用“保存”。教师还可以引导学生根据常用工具的图标加以区别,你到底是要取出文件还是放入磁盘,从而加以选择相应命令。

另外,有时是学生选错了命令,随手按个“确定”,导致将原有文件覆盖。选错命令大部分人都会碰到,关键是因为学生在操作时,没能意识到自己已经错了,所以必须教育学生在计算机操作过程中做到细心,一定要注意对话框的内容,学会使用“取消”命令,避免不必要的损失。其实,操作计算机过程中,计算机本身就会反馈很多信息,我们要教会学生学会看信息,处理信息,这本来就是信息技术学科的根本目标。

二、 讲清“保存”与“另存为”的联系与区别。

对于一个新建文档来说,这两个命令是一样的,打开的都是“另存为”对话框。而对于已经存过盘的文档,这两个命令则不一样,“保存”表示按原位置、原文件名保存;而“另存为”则是可以改变文件的位置、文件名,会有对话框弹出。在操作过程中应让学生明白,如果在自己的文档上直接修改,可以按“保存”命令,直接保存;如果是打开的.是公用文档,或者要复制一份存到其他地方,就应该用“另存为”命令。

由于我们现在上课一般都在网络机房上课,教师布置作业,可以只在教师机上做一份准备,学生就可以从网上调用练习了,这也给文件保存带来一定的影响。因为操作者练习完后,明明是按“保存”,但是出现“另存为”对话框的现象(因为教师机上的练习文件夹一般是只读共享),这时应提醒学生及时调整保存方案,将保存位置选在自己可以保存文件的位置上。

三、 给自己定一个文件命名规则

在开始接触文件存取的时候,尽量让学生养成按文件内容起文件名的习惯,以便于以后查找。关于文件名不能重复的规则,教师可以用打比方的方法加以引导。比如,在同一教室里,有两个同名同姓的人,老师如果叫这个名字时会怎么样?让学生理解文件也不能重名的原因。再让学生给老师想个办法,怎样才能不出现两个人一起站起来的这种状况。学生回答,可以加上其他特征,加以区别。让学生自己定一条命名规则:遇到与以前文件重名时,在文件名后面加数字等标识加以区别。当然,还可以用这个比方,将文件后缀名比作“姓”,主文件名比作“名”,让学生弄清文件类型不同,主文件名可以一样的道理。

四、 注意文件的保存位置

学生开始使用计算机时,对计算机的存储管理是不清楚的,只知道哪里好放就往哪里放,到最后自己都不知道在哪里,或者出现文件的相互替代。所以,培养学生良好的使用计算机习惯,还必须引导学生建立自己固定的存储空间。在第一次存储文件以前,就有必要教学生建立自己的文件夹,以后,凡是自己需要存储的文件,都放在自己的文件夹中,这样可以有效避免学生机中文件重名的问题,也为自己查找文件提供方便。第一次存储时,还必须要求特别注意让学生知道怎样才能将文件保存在自己的文件夹,即在“保存位置”的框中必须显示自己的文件夹名,才可以按“保存”按钮。随着学习计算机使用时间的推移,文件夹中内容的增多,还必须让学生学会整理文件夹,建立子文件夹,分门别类存放信息,给自己带来方便。当然,在管理自己文件夹的同时,还必须教育学生,不能随便打开别人的文件夹进行修改,养成道德使用计算机的习惯。

当然,在教学保存或打开文件的时候,作为训练的补充,我们也必须要求学生将文件保存到其他指定位置,或从其他位置打开一个文件,以免学生形成思维定势。在训练中,我们还有必要让学生说一说文件存取的路径,加深计算机文件目录结构的印象。

动动配置,数据存取更安全 篇3

在信息技术日益普及的今天, 不管是个人用户还是单位用户, 需要处理和保护的数据越来越多。为了实现目的, 不少用户常常想方设法寻找外力工具来确保数据文件存取的安全。实际上没有必要舍近求远, 只要动动Windows系统的一些配置, 就能让特定数据文件的存取操作更安全。

移除数据加密图标

保护数据文件安全最直接的方法就是对其采取加密保护措施。Windows系统中自身就有加密保护措施, 除集成有新兴的Bit Locker加密技术外, 还保留了原有的EFS加密技术。但在使用EFS时, 被保护的数据文件会出现明显的加锁图标, 而且NTFS系统会以不同的颜色显示, 这会很清楚地暴露目标文件。

可以采取如下操作移除数据加密图标:依次单击“开始”、“运行”命令, 弹出系统运行对话框, 输入“regedit”命令并回车, 开启系统注册表编辑器运行状态。在该编辑界面左侧列表中, 将鼠标定位到注册表节点“HKEY_L O C A L_M A C H I N ESOFTWAREMicrosoftWindowsCurrent VersionExplorerShell Icons”上, 如图1所示。在目标节点选项的右侧区域, 用鼠标右键单击空白位置, 从弹出的右键菜单中逐一点选“新建”、“字符串值”命令, 将新创建的字符串值名称设置为“178”, 并鼠标双击, 在对应键值对话框中, 输入一个空白ICON图标的完整路径, 单击“确定”按钮。重启计算机后, 数据文件的加密图标就被成功移除了。

拒绝解密威胁数据

如果存储私密数据的系统登录密码不够“健壮”, 非法用户很轻松就能借助外力暴力破解登录密码。因此建议动动组策略配置, 启用相关密码策略, 强制用户使用更复杂、更安全的密码来保护系统登录的安全。

首先启用帐户锁定策略, 强制登录密码输入次数超过规定后自动将相关帐户锁定起来, 并且在帐户锁定期满之前无法继续进入系统。在进行该操作时, 先依次单击“开始”、“运行”命令, 弹出系统运行对话框, 输入“gpedit.msc”命令并回车, 弹出系统组策略编辑界面。在该界面左侧区域, 逐一跳转到“本地计算机策略”、“计算机设置”、“Windows设置”、“安全设置”、“帐户策略”、“帐户锁定策略”分支上。双击指定分支下的“帐户锁定阈值”选项, 切换到如图2所示的设置框, 输入合适的登录尝试失败次数。正常来说, 将该登录次数输入为“3”到“5”次为宜, 确认后保存即可。

接着强制使用更多密码位数, 建议普通用户密码所包含字符应该不少于12个, 管理员级别的密码字符数应要达到15个字符。要达到该目的, 只要在系统组策略编辑器窗口左侧区域, 依次跳转到“本地计算机策略”、“计算机配置”、“Windows设置”、“安全设置”、“账户策略”、“密码策略”分支上, 双击指定分支下的“密码长度最小值”选项, 展开对应选项属性对话框, 在其中输入“12”或“15”, 单击“确定”按钮。

第三, 强制定期变换登录密码内容, 能有效降低安全威胁程度。在系统组策略编辑窗口左侧区域, 依次选择“本地计算机策略”、“计算机配置”、“Windows设置”、“安全设置”、“账户策略”、“密码策略”分支选项, 双击其中的“密码最长使用期限”选项, 在其后界面中输入合适的密码变换间隔时间。

追踪数据存取痕迹

Windows系统自带有强大的对象审核功能, 通过这项功能可全程追踪重要数据的存取痕迹, 包括对重要数据文件的编辑、修改, 是否创建了目录, 是否了运行其中的特定程序等。例如, 要追踪“F:111”目录中的数据文件存取痕迹时, 可以按照下面的操作来进行:

首先进入系统的资源管理器窗口, 逐一单击“工具”、“文件夹选项”命令, 弹出文件夹选项设置框, 选择“查看”选项卡, 将对应设置页面中的“使用简单文件共享”选项取消选中, 单击“确定”按钮保存。

之后打开系统运行对话框, 执行“gpedit.msc”命令, 开启系统组策略编辑器。在该编辑左侧列表中, 依次选中“本地计算机策略”、“计算机配置”、“Windows设置”、“安全设置”、“本地策略”、“审核策略”分支选项, 找到对应分支下的“审核对象访问”选项, 同时用鼠标双击, 弹出如图3所示的对话框, 勾选“成功”、“失败”等选项, 确认后返回。

接着在系统资源管理器窗口中, 打开“F:111”目录的右键菜单, 单击“属性”命令, 选择“安全”选项卡, 在安全选项页面中点击“高级”按钮, 展开特定目录的高级安全设置对话框。继续点选“审核”选项卡, 切换到“高级安全设置”页面, 点击“添加”按钮, 选择并添加“Everyone”账号, 确认后进入目标账号的审核项目列表窗口, 将“遍历文件夹/执行文件”、“创建文件/写入数据”、“创建文件夹/附加数据”等选项的“成功”、“失败”操作都勾选 (如图4所示) 。如此“F:111”目录的有关操作就会被Windows系统智能审核追踪。

智能授予数据权限

在公共场合往往会发生重要数据被通过U盘悄悄带走的现象。实际上, 可以按需分类, 为不同用户智能授予不同等级的U盘数据访问权限。

要实现这种控制目的时, 首先通过文本编辑程序创建好用户既可以正常显示U盘内容, 又能存取其中数据的脚本文件, 假设该脚本文件的名称为“123.bat”, 其中的代码内容为:

其中首行代码被执行时, 会为当前登录用户授予显示U盘分区图标的权限, 第二行代码被执行时, 会为当前用户授予存取U盘数据的操作权限。

同样地, 再生成好限制用户使用U盘设备的脚本文件, 假设该批处理文件为“234.bat”, 该文件中的代码内容如下:

上述代码执行会将U盘所用的USB接口强制定义为禁用状态, 日后非法用户即使将U盘插入到计算机中, 也不能通过它转移数据。

下面以“abc”用户账号登录进入计算机系统, 逐一单击“开始”、“运行”命令, 展开系统运行对话框, 输入“gpedit.msc”命令, 单击“确定”按钮弹出系统组策略编辑界面。在该界面的左侧显示区域中, 依次选择“本地计算机策略”、“计算机配置”、“Windows设置”、“脚本 (启动/关机) ”分支选项, 双击指定分支下的“启动”组策略, 切换到如图5所示的选项设置框。按下“添加”按钮, 在其后界面中添加先前生成“123.bat”脚本文件, 单击“确定”按钮返回。如此, “abc”用户账号日后再次登录进入计算机系统时, Windows系统会智能执行脚本文件“123.bat”来允许当前用户正常使用移动硬盘, 同时允许对移动硬盘中的所有数据进行读写操作。

之后以“bcd”用户账号登录进入计算机系统, 按照同样的操作方法, 将“234.bat”批处理文件添加到启动组策略中, 这样“bcd”用户日后完成系统登录操作后, 计算机将会智能调用脚本文件“234.bat”来限制用户使用计算机的USB接口, 这时非法用户即使插入U盘也无法存取其中的数据文件。

管好数据安全证书

在保护数据文件存取安全时, 很多用户会首选Windows系统自带的EFS加密功能对数据执行加密操作。EFS功能对重要数据进行加密时会产生对应的用户证书, 该证书与加密的文件以及安全标识符等是相互联系的。倘若在计算机中存储了太多的加密数据和安全证书, 并且要经常访问这些加密数据时, 有可能会出现加密数据和安全证书在对应关系上的“混乱”问题, 这将会影响到重要数据的安全存取效率。

要识别加密数据的安全证书, 不妨通过查找证书的编号, 直接右击特定加密文件, 点选右键菜单中的“属性”命令, 弹出加密文件属性设置框, 选择“常规”标签, 按下“高级”按钮, 切换到高级设置对话框中。点击“详细信息”按钮, 展开“证书缩略图”对话框, 从中就能获取安全证书的唯一编号。对于其编号内容, 不妨使用证书管理器来查看, 逐一点击“开始”、“运行”命令, 展开系统运行对话框, 输入“certmgr.msc”命令并回车, 进入如图6所示的证书管理器界面, 导入安全证书, 重新设置好安全证书的名称, 尽量与前面获取到的证书编号对应。日后就能通过证书编号和证书文件名称的对应关系快速找到加密数据的安全证书。

谨防隐私数据显现

Windows 7以上版本系统新增有强大的数据搜索功能, 用户不经意间在系统“开始”菜单的搜索文本框中输入一些关键字, 或许就能将某些隐私性数据文件搜索显现出来。按如下步骤可保证隐私数据不被显现出来:首先在系统开始菜单的搜索文本框中输入“索引选项”关键字并回车, 展开如图7所示的索引选项设置对话框;如果系统尚未创建索引列表, 则不需进行任何设置, 如看到隐私数据已经出现在索引列表中, 那只要按下“修改”按钮, 切换到索引位置列表框, 取消选中隐私数据所在的文件夹, 确认即可。

上一篇:图片新闻说明文下一篇:原因经验