用PB的话可以有
  SELECTBLOB,UPDATEBLOB 语句

解决方案 »

  1.   

    忘记跟各位高手说了,我是用VB+ado访问,我是用ado.steam可是访问LONG RAW时不通
      

  2.   

    oracle 里不支持ADO的stream流的方式,不知道是为什么,long raw 是保存原始图象信息,你可以用二进制的方法,把那个字段读到一个数组里面,然后把它写到文件里面去。
    function如下,供大家参考。
    '********** 功能:从ORACLE 数据库中LONG RAW 读出照片,在当前目录中生成jsytemp.bmp
    '当然这个函数现在还不太完美
    Public Function Readphoto(jsybh As String, conn As ADODB.Connection) As Boolean
        Dim datafile As Integer, Fl As Long, Chunks As Integer
        Dim Fragment As Integer, Chunk() As Byte, i As Integer
        Const ChunkSize As Integer = 16384
        Dim lngOffset As Long
        Dim lngTotalSize As Long
        Dim strChunk As String
        Readphoto = False
        Dim rs As New ADODB.Recordset
        rs.Open "select  * from T_D_JSYPHT where jsybh='" & jsybh & "'", conn, adOpenKeyset, adLockOptimistic
        If rs.EOF Then
            MsgBox "数据库里没有此相片的记录,请重新输入"
            Readphoto = False
            Exit Function
        End If
        datafile = 1
        Open App.Path & "\jsytemp.bmp" For Binary Access Write As datafile
        lngTotalSize = rs!photo.ActualSize
        If lngTotalSize < 200 Then
            MsgBox "数据有错误,请与系统管理员联系"
            Readphoto = False
            Close datafile
            Exit Function
        End If
        Chunks = lngTotalSize \ ChunkSize
        Fragment = lngTotalSize Mod ChunkSize
        ReDim Chunk(ChunkSize)
        Chunk() = rs(1).GetChunk(ChunkSize)
        Put datafile, , Chunk()
        lngOffset = lngOffset + ChunkSize
        Do While lngOffset < lngTotalSize
            Chunk() = rs!photo.GetChunk(ChunkSize)
            Put datafile, , Chunk()
            lngOffset = lngOffset + ChunkSize
        Loop
        Close datafile
        Readphoto = True
        Exit Function
    err:
        Readphoto = False
    End Function