- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Delphi和SQL Server图像数据存取技术
基于Delphi和SQL Server图像数据存取技术
摘 要:本文介绍了Microsoft SQL Server中大型二进制对象数据的存取机制,针对Delphi开发工具,介绍了一种通过文件流来存取Microsoft SQL Server中的图像数据的方法。
关键词:大型二进制对象 image数据类型 文件流 数据库引擎
一、引言
随着信息技术的发展,越来越多的系统中需要存取图像数据,而对于图像数据的保存有两种方法:一种是将图像数据以文件形式存放在磁盘中,在数据库中只存储这些文件的路径和文件名;另一种是将图像数据和其他数据一样直接存储在数据库中。当要处理大量图像数据时,把图像数据直接存储在数据库中有许多优点:
易于管理 当图像数据与其他数据一起存储在数据库中时,图像数据与其他数据是一起备份和恢复的,这样就减少了图像数据与其他数据不同步的机会,也降低了其他用户无意中删除了文件系统中图像数据文件的风险。另外,由于图像数据与其他数据一起存储在数据库中,其插入、更新和删除可在同一个事务中实现,确保了数据的一致性。
可伸缩性 尽管文件系统被设计为能够处理大量不同大小的对象,但是文件系统不能对大量小文件进行优化。在这种情况下,数据库系统可以进行优化。
可用性 数据库复制允许在分布式环境中复制、分配和潜在地修改数据。在主系统失效的情况下,日志转移提供了保留数据库备用副本的方法。
因此,要真正做到各类数据在数据库中安全管理,研究和探索直接将图像数据存储在数据库中的方法是非常必要的。
二、 Microsoft SQL Server 系统中的 BLOB 数据及其存取机制
BLOB(binary large object,大型二进制对象)数据类型主要用于保存多媒体对象,比如图像、视频和声音。在Microsoft SQL Server系统中,BLOB可以是text、ntext或image数据类型。其中,image 数据类型用来存储变长的二进制数据,最大长度是2GB,非常适合存储图像数据。
BLOB数据在Microsoft SQL Server系统中的存储方式不同于普通的数据类型,对于普通类型的数据系统直接在用户定义的字段上存储数据值,而对于BLOB类型数据,系统开辟新的存储页面来存放这些数据,表中BLOB类型数据字段存放的仅是一个16字节的指针,该指针指向存放该条记录的BLOB数据的页面。
在Microsoft SQL Server系统中,当数据小于 8000 字节时,可以用普通的SQL语句(SELECT、INSERT、UPDATE、DELETE)来完成对数据的查询操纵,当数据大于8000字节时,Microsoft SQL Server提供了 WRITETEXT 、READTEXT和UPDATETEXT这三个函数来读取和修改数据。这三个函数的使用比较复杂,以 READTEXT 为例,其一般形式为
READTEXT {table.column text_ptr offset size} [HOLDLOCK]
其中,table.column为表中的字段,text_ptr为一个16字节的指针,offset 为偏移量,即从第几个字节开始读数据,size为要读的字节数,HOLDLOCK 为在读数据时是否允许其他用户修改该数据。
例:DECLARE @ptrval varbinary(16)
SELECT @ptrval = TEXTPTR(img_ct) FROM zy_ct WHERE id_ct = 20010101001
READTEXT zy_ct.img_ct @ptrval 1 25
但是READTEXT函数读取的数据无法直接传递回前端应用程序,本文将介绍一种使用Delphi存取Microsoft SQL Server 系统中图像数据的简单方法。在SQL Server 系统中建立表TEST,表中的字段及属性见表1。
表1 TEST的字段及属性
三、使用Delphi存取Microsoft SQL Server中的图像数据
图像数据的存储格式有很多种类,常见的有BMP、JPEG、GIF等等,如果按照每种格式去单独编写存取代码,就会使问题复杂化。但是,不论哪种格式的存盘文件,都可以看成文件“流”的形式。Delphi中的TFileStream数据类型以流的形式对字符或非字符数据进行处理,就像在内存中开辟了一个大小可变的临时缓存区。它不仅能方便地对外部文件进行读写,而且还可以将流中的全部数据直接转入数据库,可用它作桥梁完成图像数据的存取。
(一)数据集组件的选择
在Delphi 连接数据库的BDE方式中,通常数据集组件可以选择TTable或TQuery,如果使用T
您可能关注的文档
- 北京市城镇生活方式环境与能源调查分析.doc
- 北京市生产性土地部门关联效应分析.doc
- 北京援藏第一线群众期待就是我努力方向.doc
- 北京故宫收藏汝窑瓷器.doc
- 北京暴雨灾害引出话题.doc
- 北大“Mr.Miss”组合考古女孩“爵士”情调.doc
- 北京现代都市低碳农业前景与策略.doc
- 北大女生山鹰梦,活着就要再次出发.doc
- 北大“功狗”蒋梦麟.doc
- 北大荒八五二分公司倾力打造现代化农业“冲锋舟”.doc
- 云南师大附中2026届高考适应性月考卷(五)英语.doc
- 云南师大附中2026届高考适应性月考卷(五)政治答案.doc
- 浙江省金丽衢十二校2025学年高三第一次联考生物卷-2512金丽衢十二校.doc
- 浙江省强基联盟2025年12月高三联考地理 --浙江强基联盟12月高三联考.doc
- 浙江省强基联盟2025年12月高三联考化学试题卷答案.doc
- 浙江省强基联盟2025年12月高三联考化学.doc
- 江西省2026届高三上学期11月联考(JX)生物答案.doc
- 浙江省强基联盟2025年12月高三联考英语--浙江强基联盟12月高三联考DA.doc
- 浙江省金丽衢十二校2025学年高三第一次联考英语答案.doc
- 浙江省金丽衢十二校2025学年高三第一次联考英语试题.doc
原创力文档


文档评论(0)