• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> 数据库 >> MSSQL >> 详细内容
 

推荐文章

  • SQL数据库的备份、压缩与SQL数据库数据处理的方法
  • 压缩SQL数据库
 
 

热点文章

  • 安装SQL Server 2005实例环境图解
  • SQL数据库的备份、压缩与SQL数据库数据处理的方法
  • SQL SERVER 2005数据库镜像
  • SQL数据库还原出现错误112(磁盘空间不足)的解决办法
  • 如何使用SQL Server 2000中的XML功能
  • Server 2005性能排错
  • SQL Server 2000中的SQL语言简介
  • 在SQL Server中的关系型数据仓库分区策略
  • SQLServer删除日志方法
  • 压缩SQL数据库
  • SQL精妙语句
  • SQL Server 2000中的SQL语言简介(一)
 
 

相关文章

  • 微软新一代数据库SQL Server 2008明年初上市
  • SQL Server非正常删除日志文件(ldf)恢复方法
  • SQL Server 性能优化工具
  • SQL Server性能分析参数
  • SQL Server数据仓库相关概念及构建流程
  • 详解SQL Server中数据库快照工作原理
  • SQL Server数据库中存储引擎深入探讨
  • 构造SQL Server的安全门
  • SQL Server数据库中使用触发器经验谈
  • SQL Server乐观锁定和悲观锁定实例
  • 四项技术 助你提高SQL Server的性能
  • 关于SQL Server中索引使用及维护简介
 
 

百度搜索

 
 

SQL Server对图像数据的存储机制介绍

  • 阅览次数:
  • 文章来源: a hear
  • 原文作者: 不详
  • 整理日期: 2007-04-07
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

(2)程序实现

程序一:写数据函数

Public Function AppendBlobFromFile

(blobColumn As ADODB.Field, ByVal FileName) As Boolean

Dim FileNumber     As Integer     '文件号

Dim DataLen             As Long            '文件长度

Dim Chunks               As Long            '数据块数

Dim ChunkAry()     As Byte     '数据块数组

Dim ChunkSize      As Long            '数据块大小

Dim Fragment       As Long            '零碎数据大小

Dim lngI                   As Long  '计数器



On Error GoTo ErrorHandle

AppendBlobFromFile = False

ChunkSize = 2048                          '限制每次读取的块大小为 2K



FileNumber = FreeFile                        '产生随机的文件号

Open FileName For Binary Access Read As FileNumber     '打开图像文件

DataLen = LOF(FileNumber)               '获得文件长度

If IsNull(blobColumn) Then Exit Function



If DataLen = 0 Then                      '文件长度为0

Close FileNumber

AppendBlobFromFile = True

Exit Function

End If



Chunks = DataLen \ ChunkSize           '数据块的个数

Fragment = DataLen Mod ChunkSize

If Fragment > 0 Then                    '先写零碎数据

ReDim ChunkAry(Fragment - 1)

Get FileNumber, , ChunkAry()          '读出文件

blobColumn.AppendChunk ChunkAry   '调用AppendChunk函数写数据

End If



ReDim ChunkAry(ChunkSize - 1)        '为数据块开辟空间

For lngI = 1 To Chunks                        '循环读出所有数据块

Get FileNumber, , ChunkAry()          '读出一块数据

blobColumn.AppendChunk ChunkAry '在数据库中增加数据块

Next lngI



Close FileNumber                   '关闭文件

AppendBlobFromFile = True

Exit Function

ErrorHandle:

AppendBlobFromFile = False

MsgBox Err.Description, vbCritical, "写图像数据出错!"

End Function

程序二:读数据函数

Public Function ReadbolbToFile

(blobColumn As ADODB.Field, ByVal FileName) As Boolean

Dim FileNumber     As Integer     '文件号

Dim DataLen               As Long            '文件长度

Dim Chunks               As Long            '数据块数

Dim ChunkAry()     As Byte     '数据块数组

Dim ChunkSize      As Long            '数据块大小

Dim Fragment       As Long            '零碎数据大小

Dim lngI                   As Long  '计数器



On Error GoTo ErrorHandle

ReadbolbToFile= False

ChunkSize = 2048                        '定义块大小为 2K

If IsNull(blobColumn) Then Exit Function



DataLen = blobColumn.ActualSize           '获得图像大小

If DataLen < 8 Then  Exit Function    '图像大小小于8字节时认为不是图像信息

FileNumber = FreeFile                      '产生随机的文件号

Open FileName For Binary Access Write As FileNumber  '打开存放图像数据文件

Chunks = DataLen \ ChunkSize         '数据块数

Fragment = DataLen Mod ChunkSize   '零碎数据

If Fragment > 0 Then                  '有零碎数据,则先读该数据

ReDim ChunkAry(Fragment - 1)

ChunkAry = blobColumn.GetChunk(Fragment)

Put FileNumber, , ChunkAry       '写入文件

End If



ReDim ChunkAry(ChunkSize - 1)             '为数据块重新开辟空间

For lngI = 1 To Chunks                               '&shy;循环读出所有块

ChunkAry = blobColumn.GetChunk(ChunkSize)   '在数据库中连续读数据块

Put FileNumber, , ChunkAry()     '将数据块写入文件中

Next lngI

Close FileNumber                 '关闭文件

ReadbolbToFile= True

Exit Function

ErrorHandle:

ReadbolbToFile= False

MsgBox Err.Description, vbCritical, "读图像数据出错!"

End Function

当BLOB类型的字段为空时,调用AppendChunk或 GetChunk函数将出错。此时如果想给该字段插入图像数据,应该先使用 Update语句给该字段赋初值如0x0,以便数据库系统为该字段分配一个页面地址来存放BLOB数据。

4、总结

Microsoft SQL Server为保存大二进制数据提供了存储平台,Visual Basic 6.0为存取这种数据提供了灵活的接口。本文介绍的用VB接口存取 MIS SQL Server中大二进制数据的方法,不但适用于图像文件,同样适用于其它类型的文件。该方法应用于医院管理系统的图像存取中,在存取速度、对系统的性能影响等方面都取了满意的效果。

[1] [2]

上一篇:PHP使用zlib扩展实现页面GZIP压缩输出
下一篇:构建支持Master/Slave读写分离的数据库操作类
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号