基于Delphi和SQL Server图像数据存取技术.docVIP

基于Delphi和SQL Server图像数据存取技术.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档