科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道SQL Server对图像数据存储机制介绍(3)

SQL Server对图像数据存储机制介绍(3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍MIS SQL Server对图像数据的存储机制和存取方法。针对VB开发工具,介绍了一种通过ADO Field 对象的GetChunk 方法和AppendChunk 方法来存取MIS SQL Server中的图像数据的方法。

作者:李小琳 来源:ahcit.com 2007年9月3日

关键字: 存储机制 数据库 SQL Server SQL Server 各版本

  • 评论
  • 分享微博
  • 分享邮件

程序二:读数据函数

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中大二进制数据的方法,不但适用于图像文件,同样适用于其它类型的文件。该方法应用于医院管理系统的图像存取中,在存取速度、对系统的性能影响等方面都取了满意的效果。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章