源码如下:Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim stm As ADODB.StreamPrivate Sub SavePictureToDB(cn As ADODB.Connection)On Error GoTo EH
Set stm = New ADODB.Stream
rs.Open "select sfz,photo from photo", cn, adOpenKeyset, adLockOptimistic
With stm
.Type = adTypeBinary
.Open
.LoadFromFile App.Path &"\4.jpg"
End With
With rs
.AddNew
.Fields("ImagePath") = Text1.Text
.Fields("ImageValue") = stm.Read
.Update
End With
rs.Close
Set rs = Nothing
Exit Sub
EH: MsgBox Err.Description, vbInformation, "Error"
End Sub
在调试过程中 到步骤:
rs.Open "select sfz,photo from photo", cn, adOpenKeyset, adLockOptimistic
报错: 数据类型不被支持请大家帮忙,尽量说详细些,我搜索了很多贴子,都没有解决
Dim rs As New ADODB.Recordset
Dim stm As ADODB.StreamPrivate Sub SavePictureToDB(cn As ADODB.Connection)On Error GoTo EH
Set stm = New ADODB.Stream
rs.Open "select sfz,photo from photo", cn, adOpenKeyset, adLockOptimistic
With stm
.Type = adTypeBinary
.Open
.LoadFromFile App.Path &"\4.jpg"
End With
With rs
.AddNew
.Fields("ImagePath") = Text1.Text
.Fields("ImageValue") = stm.Read
.Update
End With
rs.Close
Set rs = Nothing
Exit Sub
EH: MsgBox Err.Description, vbInformation, "Error"
End Sub
在调试过程中 到步骤:
rs.Open "select sfz,photo from photo", cn, adOpenKeyset, adLockOptimistic
报错: 数据类型不被支持请大家帮忙,尽量说详细些,我搜索了很多贴子,都没有解决
insert into part values (1,'ORACLE NETWORK',EMPTY_BLOB(),EMPTY_CLOB(),NULL);后用access
select ...
.edit我没有试过不知道可不可以阿
不幸得话
就换个方法
Public Sub oWriteToDB(ByRef Fd As OraField, ByVal FileName As String)
Dim PartDesc As OraClob
Dim buffer As String
Dim chunksize As Long
Dim amount_written As Long
Set PartDesc = Fd.Value
chunksize = 1000
buffer = String$(chunksize, 32)
Open FileName For Binary As #1
PartDesc.offset = 1
PartDesc.PollingAmount = LOF(1)
remainder = LOF(1)
Get #1, , buffer
amount_written = PartDesc.Write(buffer, chunksize, ORALOB_FIRST_PIECE)
While PartDesc.Status = ORALOB_NEED_DATA
remainder = remainder - chunksize
If remainder < chunksize Then
piecetype = ORALOB_LAST_PIECE
chunksize = remainder
buffer = String$(chunksize, 32)
Else
piecetype = ORALOB_NEXT_PIECE
End If
Get #1, , buffer
amount_written = PartDesc.Write(buffer, chunksize, piecetype)
Wend
Close #1
End Sub
Dim rstOra As ADODB.Recordset
Dim intI As Integer
On Error GoTo ErrorHandler
Set adoCnn = New ADODB.Connection
Set rstOra = New ADODB.Recordset
adoCnn.ConnectionString = "Provider=OraOLEDB.Oracle;User ID=test;password=test;Data Source=oraDATA;Persist Security Info=False"
adoCnn.CursorLocation = adUseClient
adoCnn.Open
rstOra.CursorLocation = adUseClient rstOra.ActiveConnection = adoCnn
rstOra.Open "select picture from Testrecord"注意:Provider=OraOLEDB.Oracle 处及rstOra.CursorLocation = adUseClient处不能用传统的连接方式:Provider=MSDAORA.1
Dim actualSize As Long
Dim offSize As Long
Dim varReport As Variant
Dim varChunk As VariantactualSize = adoRec("Picture").actualSize
offSize = 0
Do While offSize < actualSize
varChunk = adoRec("Picture").GetChunk(ChunkSize)
varReport = varReport & varChunk
offSize = offSize + ChunkSize
DoEvents
Loop
Dim adoCnn As ADODB.Connection
Dim rstOra As ADODB.Recordset
Dim intI As Integer
On Error GoTo ErrorHandler
Set adoCnn = New ADODB.Connection
Set rstOra = New ADODB.Recordset
adoCnn.ConnectionString = "Provider=OraOLEDB.Oracle;User ID=system;password=manager;Data Source=sbzw;Persist Security Info=False"
adoCnn.CursorLocation = adUseClient
adoCnn.Open
rstOra.CursorLocation = adUseClient rstOra.ActiveConnection = adoCnn
rstOra.Open "select sfz,photo from photo1 where sfz = " + Chr(39) + Text1.Text + Chr(39)
If rstOra.RecordCount > 0 Then
If Not IsNull(rstOra.Fields("photo")) Then
bteContent = rstOra.Fields("photo").GetChunk(rstOra.Fields("photo").ActualSize) Open "C:\aa.bmp" For Binary Access Write As #1
Put #1, , bteContent
Close #1
ImgPhoto.Picture = LoadPicture("C:\aa.bmp")
Else
ImgPhoto.Picture = LoadPicture("")
End If
Else
ImgPhoto.Picture = LoadPicture("")
End If
If rstOra.State = adStateClosed Then Set rstOra = NothingExit Sub
ErrorHandler: MsgBox Err.Description, vbInformation, "Error"End Sub
Public Sub InitADODB()
Set cn = New ADODB.Connection
cn.CursorLocation = adUseClient
cn.ConnectionString = "Provider=OraOLEDB.Oracle;User ID=system;password=manager;Data Source=sbzw;Persist Security Info=False"
cn.Open
End Sub第二种:这种连接方法在win2000中可以连接,但不能往数据库中存取图片和文件,在win98下,也报错Public Sub InitADODB()
Set cn = New ADODB.Connection
cn.CursorLocation = adUseClient
cn.ConnectionString = "Provider=msdaora;Data Source=sbzw;User Id=system;Password=manager;"
cn.Open
End Sub