专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »VB教程 » sqlserver存储过程:SQL Server存储图像数据的策略和思路方法 »正文

sqlserver存储过程:SQL Server存储图像数据的策略和思路方法

来源: 发布时间:星期四, 2009年1月15日 浏览:23次 评论:0
  目前对于图像数据管理大都采用表+实体思路方法即图像数据以文件形式存放于指定计算机目录下在数据库表中只反映图像数据文件存储路径这种管理模式给数据维护增加了难度同时也给数据安全带来隐患因此要真正做到各类数据在数据库中安全管理研究和探索直接将图像数据存储在数据库关系表中思路方法是非常必要

  笔者在Visual Basic 6.0开发环境中采用客户机/服务器工作方式针对SQL Server数据库关系表中存储图像数据问题进行了初步探讨提出了套基本解决方案供读者参考

  、 存储图像数据策略

  图像数据库技术直致力于解决海量数字图像有效存储和管理问题它是数据库技术继承和发展方面图像数据和文本数据存在着本质区别在文本数据领域得以成功应用传统数据库技术如果成不变照搬到图像数据库领域结果往往是低效甚至无效;另方面传统数据库许多成果如SQL语言、索引技术等都值得图像数据库借鉴上述两个方面结合成为目前图像数据库技术发展主流

  1.1 BLOB数据类型

  BLOB是非常巨大不定 2进制或者型数据通常是文档(.txt、.doc)和图片(.jpeg、.g、.bmp)它可以存储在数据库中在SQL Server中BLOB可以是text、ntext或者image数据类型 Image数据类型存储是长度不确定 2进制数据最大长度是2GB

  BLOB数据在SQL Server系统中存储方式区别于普通数据类型对于普通类型数据系统直接在用户定义字段上存储数据值而对于BLOB类型数据系统开辟新存储页面来存放这些数据表中BLOB类型数据字段存放仅是个16个字节指针该指针指向存放该条记录BLOB数据页面

  1.2 BLOB设计策略

  BLOB数据是数据量很大数据类型它会占用大量硬盘空间、内存和网络资源因此合理地设计包含有BLOB数据类型属性表对提高存储效率、查询速度有很大影响般BLOB设计原则如下:

  (1) 使用BLOB数据类型还是使用varchar或者varbinary数据类型

   2进制大对象并不定要存储为text、ntext或者image数据类型它们也可以作为varchar或者varbinary数据类型村处在表格中数据类型选择要根据将要存储BLOB实际大小如果数据不会超过8K那么就使用Varchar或者varbinary数据类型如果这些大对象尺寸超过8K那么就使用text、ntext或者image数据类型

  (2) 存储BLOB在数据库中或者在文件系统中

  常见设计问题是将图片存在数据库中还是存在文件系统中在大多数情况下最好把图片文件和其它数据起存在数据库中将影像数据文件存储在数据库中有许多优点:

  易于管理 当BLOB和其他数据起存储在数据库中时BLOB和表格是数据起备份和恢复这样就降低了表格数据和BLOB数据区别步机会而且降低了其他用户无意中删除了文件系统中BLOB数据位置路径和风险另外将数据存储在数据库中BLOB和其他数据插入、更新和删除都在同个事务中实现这样就确保了数据致性和文件和数据库的间致性还有点好处是不需要为文件系统中文件单独设置安全性

  可伸缩性 尽管文件系统被设计为能够处理大量区别大小对象但是文件系统不能对大量小文件进行优化在这种情况下数据库系统可以进行优化

  可用性 数据库具有比文件系统更多可用性数据库复制允许在分布式环境中复制、分配和潜在修改数据在主系统失效情况下日志转移提供了保留数据库备用副本思路方法

  当然在某些情况下将图片存储在文件系统中将是更好选择:

  (1)使用图片应用需要数据流性能例如实时视频重现

  (2)象Microsoft PhotoDraw或者Adobe Photoshop这样应用经常访问BLOB这些应用只知道怎样访问文件

  (3)需要使用些NTFS文件系统中特殊功能例如远程存储

   2、 存储图像数据思路方法

  1 建立具有image宇段SQL Server数据库

  当需要在SQL Server数据库中存储图像数据时首先应建立包含image数据类型字段数据库关系表SQL Server数据库平台支持数据类型中image数据类型主要用于存储图像数据等大段 2进制数据SQL Server 7.0的后版本image类型可存储2GB数据

  2 使用Remote DataControl控件建立和数据库连接

  Remote DataControl控件是在Visual Basic应用中用来获取远程数据Control控件它在.远程数据对象(RDO)和数据绑定Control控件的间提供了接口只要给它提供有关数据存储位置、获取数据和些接口控制就可以连接到数据库实现对数据库基本操作

  使用Remote DataControl控件建立和远程数据库连接步骤如下:

  1.在Visual Basic窗体中加入个Remote DataControl控件

  2.在Remote DataControl控件DataSourceName属性下拉列表中选择个ODBC数据源例如pubs

  3.在Remote DataControl控件SQL属性中输入SQL查询语句例如Select * from pub_info

  2.3 绑定OLE和Remote DataControl控件实现图像数据存储和编辑

  OLE是允许应用相互的间交换和显示数据项技术使用OLE可以从支持OLE技术任何应用中读取信息也可以在任何支持OLE中显示和编辑它在Visual Basic中可利用OLE容器Control控件和Remote DataControl控件绑定来实现显示、存储和编辑SQL Serve数据库中image类型数据

  1.显示SQL Serve数据库image类型字段图像数据

  具体步骤如下:

  (1)在加入了Remote DataControl控件Visual Basic窗体中添加个OLE容器Control控件创建OLE容器Control控件时会出现“插入对象’:对话框此时点击“取消”按钮不必为该容器指定对象

  (2)将OLE容器Control控件DataSource属性设置为Remote DataControl控件名字实现Control控件绑定

  (3)在OLE容器Control控件DataField属性下拉列表中选择要显示字段名例如logo

  (4)运行应用对于包含image数据类型logo字段数据将在OLE容器Control控件中显示幅图像

  2.在SQL Sever数据库image类型字段中添加存储图像数据

  具体步骤如下:

  (1)将Remote DataControl控件EOFAction属性设置为rdAddNew实现数据库数据添加功能

  (2)在Visual Baisic窗体中添加个CommandButtonControl控件并编写图像文件嵌入OLE容器Control控件代码例如:

  Private Sub Command_Click
OLEl.CreateEmbed“c:\图片.bmp”
End Sub


  (3)运行应用点击Remote DataControl控件记录指示按钮移动到新记录然后点击CommandButtonControl控件按钮实现图像数据添加入库操作

  3.编辑SQL Serve数据库image数据类型字段图像数据

  具体步骤如下:

  (1)在Visual Basic窗体中添加个CommandButtonControl控件编写对OLE对象编辑代码例如:

  Private Sub Command2--_Click
OLEl.DoVerb VbOLEOpen
End Sub


  (2)运行应用点击Remote DataControl控件记录指示按钮选择需要编辑图像然后点击CommandButtonControl控件按钮在分隔应用窗口打开对象进行图像编辑操作



  4、图像文件自动入库方式实现

  在数据库实际应用中经常需要将图像文件批量存储以提高数据入库操作自动化程度对于图像文件批量存储代码编写中可充分利用OLE容器Control控件和RemoteDataControl控件诸多属性和思路方法加以实现

  具体步骤如下:

  (1)将OLE和RemoteDataControl控件Visible属性设置成False使OLE和RemoteDataControl控件不可视

  (2)建立图像文件批处理文件

  (3)编写以下基本代码实现批处理功能

  Private Sub Command3_Click
Dim FileName As String
Open "c:\tesffile.txt"ForlnputAs#1'打开批处理文件
DoWhileNotEOF(1)'循环至文件尾
Input#lFileName'读入图像文件名
MSRDCl.Result.AddNew‘结果集添加记录
OLEl.CreateEmbedFileName‘嵌入图像文件
MSRDCl.Result.Update
Loop
Close #1
End Sub


  (4)运行应用点击CommandButtonControl控件按钮完成图像文件自动入库

   5、结束语

  随着SQL Serve数据库管理系统功能不断增强、性能不断完善将各类数据完全由数据库管理系统统存储和管理已成为技术发展趋势只有这样SQL Serve数据库管理系统强大功能才能得到充分发挥数据安全性才能得到充分保障使得诸如数据库复制、数据转移等许多工作变得非常简单容易



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: