下面是一个网上的文章,存取ORACLE的BLOB字段,但运行出错,cmdsave_Click()中rs.open说数据类型不支持,为何,真的VB不支持ORACLE的BLOB吗?
原文Provider=OraOLEDB.Oracle.1;,但在我机上试打不开数据库,改成MSDAORA.1    Option Explicit
    Dim rn As ADODB.Connection Public Function CreateDataSource(DataSource As String, UserID As String, Password As String) As Boolean
    On Error GoTo DbConErr:
    Set rn = New ADODB.Connection
    With rn
    .ConnectionString = "Provider=MSDAORA.1; password=dasm ;User ID = archives;Data Source=tjdasm;Locale Identifier=2052"
    .Open
    End With
    CreateDataSource = True
    Exit Function
DbConErr:
    CreateDataSource = False
    End FunctionSub BlobToFile(fld As ADODB.Field, filename As String, Optional ChunkSize As Long = 8192)
    Dim fnum As Integer, bytesleft As Long, bytes As Long
    Dim tmp() As Byte
    If (fld.Attributes And adFldLong) = 0 Then
    Err.Raise 1001, , "field doesn't support the GetChunk method."
    End If
    If Dir$(filename) <> "" Then Kill filename
    fnum = FreeFile
    Open filename For Binary As fnum
    bytesleft = fld.ActualSize
    Do While bytesleft
    bytes = bytesleft
    If bytes > ChunkSize Then bytes = ChunkSize
    tmp = fld.GetChunk(bytes)
    Put #fnum, , tmp
    bytesleft = bytesleft - bytes
    Loop
    Close #fnum
    End SubSub FileToBlob(fld As ADODB.Field, filename As String, Optional ChunkSize As Long = 8192)
    Dim fnum As Integer, bytesleft As Long, bytes As Long
    Dim tmp() As Byte
    If (fld.Attributes And adFldLong) = 0 Then
    Err.Raise 1001, , "field doesn't support the GetChunk method."
    End If
    If Dir$(filename) = "" Then Err.Raise 53, , "File not found"
    fnum = FreeFile
    Open filename For Binary As fnum
    bytesleft = LOF(fnum)
    Do While bytesleft
    bytes = bytesleft
    If bytes > ChunkSize Then bytes = ChunkSize
    ReDim tmp(1 To bytes) As Byte
    Get fnum, , tmp
    fld.AppendChunk tmp
    bytesleft = bytesleft - bytes
    Loop
    Close #fnum
    End SubPrivate Sub cmdread_Click()
Dim rs As New ADODB.Recordset
    rs.ActiveConnection = rn
    rs.LockType = adLockOptimistic
    rs.CursorLocation = adUseClient
    rs.Source = "select * from t_demo"
    rs.Open
    ComDlgDir.DialogTitle = "保存文件"
    ComDlgDir.Filter = "*.*"
    ComDlgDir.ShowSave
    Call BlobToFile(rs.Fields("text"), ComDlgDir.filename)
    Set rs = Nothing
    Exit Sub
    Set rs = NothingEnd SubPrivate Sub cmdsave_Click()
Dim rs As New ADODB.Recordset
    rs.ActiveConnection = rn
    rs.LockType = adLockOptimistic
    rs.CursorLocation = adUseClient
    rs.Source = "select * from t_demo"
    rs.Open  '数据类型不被支持
    rs.AddNew
    ComDlgDir.DialogTitle = "选取文件"
    ComDlgDir.ShowOpen
    rs.Fields("id").Value = 1
    If ComDlgDir.filename <> "" Then
    Call FileToBlob(rs.Fields("text"), ComDlgDir.filename)
    rs.Update
    End If
    Set rs = Nothing
    Exit Sub
    Set rs = NothingEnd SubPrivate Sub Form_Load()
If Not CreateDataSource("sid", "systemp", "manager") Then
    MsgBox "Connection failure!"
    End IfEnd Sub