没用过oracle。试试下面代码。其实什么数据库都一样。
Dim conn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
conn.Open "************"
rs.Open "tablename", conn, 3,3
rs.AddNew
Dim adoStream As New ADODB.Stream
adoStream.Type = adTypeBinary
adoStream.Open
adoStream.LoadFromFile "c:\myphoto.jpg"
'将二进制文件写入大字段:
Rs.Fields.Item(0).AppendChunk adoStream.Read
rs.Update
'================================
'从大字段读取二进制数据:
Dim TempFileName As String
TempFileName = "c:\temp.jpg"
adoStream.Write adoRecordset.Fields.Item(0).GetChunk(adoRecordset.Fields.Item(0).ActualSize)
adoStream.SaveToFile TempFileName, IIf(Len(Trim(Dir(TempFileName, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
Dim conn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
conn.Open "************"
rs.Open "tablename", conn, 3,3
rs.AddNew
Dim adoStream As New ADODB.Stream
adoStream.Type = adTypeBinary
adoStream.Open
adoStream.LoadFromFile "c:\myphoto.jpg"
'将二进制文件写入大字段:
Rs.Fields.Item(0).AppendChunk adoStream.Read
rs.Update
'================================
'从大字段读取二进制数据:
Dim TempFileName As String
TempFileName = "c:\temp.jpg"
adoStream.Write adoRecordset.Fields.Item(0).GetChunk(adoRecordset.Fields.Item(0).ActualSize)
adoStream.SaveToFile TempFileName, IIf(Len(Trim(Dir(TempFileName, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
Private Function DatabaseToFile(ByVal DataField As ADODB.Field, ByVal vSaveAs As String, ByVal vFileExpendName As String) As String
Dim fnum As Long, bytesleft As Long, bytes As Long
Dim lSumSize As Long, lNowSize As Long
Dim tmp() As Byte
On Error GoTo ErrHandleDatabaseToFile
If Trim(vSaveAs) = "" Then
DatabaseToFile = GetTempFileName(vFileExpendName)
Else
DatabaseToFile = Trim(vSaveAs)
End If
fnum = FreeFile
Open (DatabaseToFile) For Binary As fnum
bytesleft = DataField.ActualSize
lSumSize = CLng(bytesleft / 8192)
Do While bytesleft
bytes = bytesleft
If bytes > 8192 Then bytes = 8192
tmp = DataField.GetChunk(bytes)
Put #fnum, , tmp
bytesleft = bytesleft - bytes
lNowSize = lNowSize + 1
RaiseEvent TransmitData(lNowSize, lSumSize, False)
Loop
Close #fnum
Exit Function
ErrHandleDatabaseToFile:
DatabaseToFile = ""
Err.Clear
End FunctionPrivate Function FileToDatabase(ByVal vDataField As ADODB.Field, ByVal vFileName As String)
Dim fnum As Long, bytesleft As Long, bytes As Long
Dim lSumSize As Long, lNowSize As Long
Dim tmp() As Byte
On Error GoTo ErrHandleFileToDatabase
fnum = FreeFile
Open vFileName For Binary As fnum
bytesleft = LOF(fnum)
lSumSize = CLng(bytesleft / 8192)
Do While bytesleft
bytes = bytesleft
If bytes > 8192 Then bytes = 8192
ReDim tmp(1 To bytes) As Byte
Get #fnum, , tmp
vDataField.AppendChunk tmp
bytesleft = bytesleft - bytes
lNowSize = lNowSize + 1
DoEvents
RaiseEvent TransmitData(lNowSize, lSumSize, True)
Loop
Close #fnum
Exit Function
ErrHandleFileToDatabase:
Err.Clear
End Function
gs.open "select Photo from photolist where id = " & cint(Request.QueryString("id")),strconn,1,1
with gs
if not .eof then
if not isnull(.Fields(0)) then
Response.ContentType ="image/pjpeg"
Response.BinaryWrite .Fields(0)
end if
end if
.close
end with
set gs = nothing
你使用的oracle是什么版本的?