精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● 数据库技术>>MSSQL产品>>Re:怎样把数据库里的图片字段还原为文件,哪有这方面的例子?

主题:Re:怎样把数据库里的图片字段还原为文件,哪有这方面的例子?
发信人: alex_d(枫之舞)
整理人: tidycc(2001-02-11 22:09:26), 站内信件
【 在 linkxl 的大作中提到:】
:怎样把数据库里的图片或声音字段还原为文件,哪有这方面的例子?
:......
 
可以用二进制流读出并写入文件。
这是我原来程序里的函数,用于access数据库用于存放图片字段的读出存为文件,希望有所帮助。

Function WriteOutObject(rsSource As Recordset, cField As String, cDest As String)
    Dim iBlocks As Integer
    Dim iDestHandle As Integer
    Dim x As Integer
    Dim ISourceLength As Long
    Dim IRemaining As Long
   ' Dim cData As String
    Dim cData() As Byte
    Dim vntRetVal As Variant
    
    ISourceLength = rsSource(cField).FieldSize()
    If ISourceLength = 0 Then
        WriteOutObject = 0
        Exit Function
    End If
    
    iBlocks = ISourceLength \ BLOCK
    IRemaining = ISourceLength Mod BLOCK
    
    If Dir(cDest) <> "" Then
        If MsgBox("Destination file already exists." + "Do you wish to overwrite?", vbYesNo) <> vbYes Then
            WriteOutObject = 0
            Exit Function
        Else
        Kill cDest
        End If
    End If
    
    iDestHandle = 33
    Open cDest For Binary As iDestHandle
    
    Dim lngOffset As Long
    ReDim cData(BLOCK)
   ' cData = rsSource(cField).GetChunk(0, IRemaining)
   ' Put iDestHandle, , cData
   For x = 0 To iBlocks
       cData() = rsSource(cField).GetChunk(lngOffset, BLOCK)
     Put iDestHandle, , cData()
     lngOffset = lngOffset + BLOCK
   Next x
    
'    For x = 1 To iBlocks
 '       cData = rsSource(cField).GetChunk((x - 1) * BLOCK + IRemaining, BLOCK)
  '      Put iDestHandle, , cData
  '  Next x
    
    Close iDestHandle
    WriteOutObject = ISourceLength
    
End Function

[关闭][返回]