sqlserver图片数据的存取.doc

sqlserver图片数据的存取.doc

ID:59252514

大小:53.00 KB

页数:6页

时间:2020-09-08

sqlserver图片数据的存取.doc_第1页
sqlserver图片数据的存取.doc_第2页
sqlserver图片数据的存取.doc_第3页
sqlserver图片数据的存取.doc_第4页
sqlserver图片数据的存取.doc_第5页
资源描述:

《sqlserver图片数据的存取.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SQLSERVER中进行图像存取的实现方法在数据库应用项目开发中,经常会使用一些二进制的图像数据,存储和读取显示图像数据主要采用的是路径链接法和内存流法。路径链接法是将图像文件保存在固定的路径下,数据库中只存储图像文件的路径和名称,此方法数据库容量小,存取速度快,但安全性较差;内存流法是将二进制数据直接存储在数据库中,此方法对数据的共享非常方便,安全性相对较高,常用于图像容量不是很大的时候。  本文主要讨论通过SQLServer2008使用内存流法如何实现二进制图像数据的存储。 1 VARBINARY(MAX)数据类型简介  在SQLServer2000和更早的版本中,如果每条记录的数据量远远

2、超过了一个单独记录的8K,我们常用IMAGE数据类型以二进制存储该数据,在使用IMAGE数据类型时,数据是不和普通数据存储在一起的。一个被称作指针的很小的二进制值,和普通数据存储在一起,这个二进制值指向数据文件里的数据实际存储的位置。对IMAGE数据进行读取、插入数据时需要使用READTEXT[1]及WRITETEXT命令,这两个命令需使用TEXTPTR函数来获得正确的二进制指针,这个二进制指针用于定位物理文件中的数据,使用起来较麻烦。  虽然在SQLServer2008中依然提供IMAGE数据类型,但微软计划在未来的SQLServer版本中删除IMAGE数据类型,用VARBINARY(MAX

3、)数据类型来代替,在该版本下不应当使用IMAGE这种类型。  VARBINARY(MAX)为可变长度二进制数据,不限最大长度,常用于数据超出8,000字节时,可以直接使用insert命令添加数据,使用起来较简单。 2 使用T-SQL语句将图像文件直接读入VARBINARY(MAX)字段  首先在SQLServer2008的查询窗口中创建测试数据库ImageDB,并建立ImageTable表来存储图像数据:  CREATEDATABASEImageTest  GO  USEImageTest;  GO  CREATETABLEImageTable  (  ImageDatavarBinary(M

4、AX)  );  然后使用Insert命令将其插入到ImageTest表中(此处图像文件为C:aa.jpg),OPENROWSET函数包含访问OLEDB数据源中的远程数据所需的全部连接信息,内置的BULK访问接口支持大容量操作,实现的代码为:INSERTINTOImageTable(ImageData)  SELECT *  FROMOPENROWSET(BULKN'C:aa.jpg',SINGLE_BLOB)ASPhotoGO  运行Select*fromImageTable语句将会看到该图像的二进制编码,但SQLServer2008不提供直接查看图片的方法,为了查看图片,我们需要创建应

5、用程序,本文第4部分介绍其实现的方法。 3 在SQLServer中将二进制数据复制到图像文件  在SQLServer2008中将二进制数据复制到图像文件,要对Windows的文件进行操作,我们需要用到xp_cmdshell扩展存储过程,在使用之前我们需获得执行该命令的权限:   EXECsp_configure'showadvancedoptions',1   GO   RECONFIGURE   GO   EXECsp_configure'xp_cmdshell',1   GO   RECONFIGURE   GO  通过执行xp_cmdshell将二进制数据复制到图像文件:  EXEC  

6、master..xp_cmdshell  'bcp"SELECTImageDataFROMImageTest.dbo.ImageTable"queryout"c:bb.jpg"-T-c'  Go  可以看到C盘下增加了一个图像文件bb.jpg。 4 使用C#.NET存取SQLServer2008中的图像数据  为在2中创建的ImageTable表添加一个ImagePath字段,用于记录图像的路径及文件名。在窗体上添加一个按钮,用于实现将图像文件读入SQLServer,实现的基本过程是先通过openFileDialog控件选择要读入的图像文件,将图像文件转换成二进制流,连接数据库后使用inse

7、rt命令将二进制流数据存储到SQLServer,实现的代码如下:  this.openFileDialog1.ShowDialog();  stringfile=this.openFileDialog1.FileName;  try  {    SqlConnectionsqlConnection=newSqlConnection(@"Data  Source=.weisql;InitialCa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。