动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库学院 > 数据库技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ 数据库技巧 ]的信息

本月文章推荐
.用SQLServer2000索引视图提高性能.
.在IE中直接连接SQL数据库 .
.数据库查询结果的动态排序(4).
.XML文件导入SQL Server 2000.
.SQL Server 2005(32 位)系统要.
.SQL Server 存储过程的经典分页.
.SqlServer存储过程/函数加/解密.
.sqlplus命令的使用大全.
.如何清除SQL日志.
.MS SQL Oracle MySQL查出值为NUL.
.解决方案:用户 'sa' 登录失败。.
.SQL Server 如何将直接传递查询作.
.SQL Server 2005 Reporting Serv.
.讲解触发器中的inserted表和dele.
.带你深入了解数据库管理系统层次.
.MS SQL Server中的CONVERT日期格.
.深入讲解数据库性能调优技术中的.
.在SQL Server所在的计算机上运行.
.解决SqlTransaction用尽的问题(.
.在设计数据库时如何选择正确的数.

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

文章类别:数据库技巧 | 发表日期:2004-9-16 |


    目前对于图像数据的管理大都采用表+实体的方法,即图像数据以文件形式存放于指定的计算机目录下,在数据库表中只反映图像数据文件的存储路径。这种管理模式,给数据的维护增加了难度,同时,也给数据的安全带来一定的隐患。因此,要真正做到各类数据在数据库中安全管理,研究和探索直接将图像数据存储在数据库关系表中的方法是非常必要的。

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

  一、 存储图像数据的策略

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

  1.1 BLOB数据类型

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

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

  1.2 BLOB的设计策略

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

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

  二进制大对象并不一定要存储为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文件系统中的特殊功能,例如远程存储。
二、 存储图像数据的方法

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

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

  2 使用Remote Data控件建立与数据库的连接

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

  使用Remote Data控件建立与远程数据库的连接步骤如下:

  1.在Visual Basic的窗体中加入一个Remote Data控件。 ,

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

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

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

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

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

  具体步骤如下:

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

  (2)将OLE容器控件的DataSource属性设置为Remote Data控件的名字,实现控件的绑定。

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

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

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

  具体步骤如下:

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

  (2)在Visual Baisic的窗体中添加一个CommandButton控件,并编写图像文件嵌入OLE容器控件的程序代码。例如:

Private Sub Command_Click()

OLEl.CreateEmbed“c:\图片.bmp”

End Sub

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

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

  具体步骤如下:

  (1)在Visual Basic的窗体中添加一个CommandButton控件,编写对OLE对象的编辑程序代码。例如:

Private Sub Command2--_Click()

OLEl.DoVerb VbOLEOpen

End Sub 

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

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

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

  具体步骤如下:

  (1)将OLE和RemoteData控件的Visible属性设置成False,使OLE和RemoteData控件不可视。

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

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

Private Sub Command3_Click()

Dim FileName As String

Open "c:\tesffile.txt"ForlnputAs#1'打开批处理文件。

DoWhileNotEOF(1)'循环至文件尾。

Input#l,FileName'读入图像文件名。

MSRDCl.Resultset.AddNew‘结果集添加记录

OLEl.CreateEmbedFileName‘嵌入图像文件

MSRDCl.Resultset.Update

Loop

Close #1

End Sub

  (4)运行应用程序。点击CommandButton控件按钮,完成图像文件的自动入库。

  五、结束语

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


上一篇:当SQL Server数据库崩溃时如何恢复? 人气:13149
下一篇:SQL Server 中易混淆的数据类型 人气:13149
点击此处浏览全部SQL Server的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-16 乘风多用户PHP统计系统 v3.4
2008-5-16 轩溪下载系统 v3.78 build 0515
2008-5-16 普沙B2B 浙江省商贸网 v2.0
2008-5-16 asp抓蜘蛛的小程序 v1.0
2008-5-16 齐齐乐网私服发布站 仿haosf新版
2008-5-16 IssTech信息反馈系统 v1.0
2008-5-16 自由领域大头贴(js接口版) 修正版
2008-5-16 医院网站系统
2008-5-16 智拓-分类信息管理系统 v5.0
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報