测试过程:
1、生成表,添加一条新纪录:
create table t_lob_test
(id number(5),
col_blob blob);
insert into t_lob_test values (1,empty_blob());2、VB代码(FORM1中有两个BUTTON,COMMAND1、COMMAND2),引用ADO2.5
Option Explicit
Option Base 1
Dim conn As ADODB.ConnectionPrivate Sub Command1_Click()
'open a jpg file for testing
Dim varBIT() As Byte, varFileSize As Long
Open "Sample.jpg" For Binary Access Read As #1
varFileSize = LOF(1)
ReDim varBIT(varFileSize)
Get #1, , varBIT()
Close (1)
'use recordset access to update LOB
Dim rs As ADODB.Recordset, sqlstr As String
sqlstr = "Select * from t_lob_test"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open sqlstr, conn, , adLockOptimistic
rs("col_blob").AppendChunk varBIT()
rs.Update
rs.Close
End SubPrivate Sub Command2_Click()
Dim varBIT() As Byte, i As Long 'open recordset and fetch LOB
Dim rs As ADODB.Recordset, sqlstr As String
sqlstr = "Select * from t_lob_test"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open sqlstr, conn, adOpenDynamic, adLockOptimistic
varBIT() = rs("col_blob").GetChunk(rs("col_blob").ActualSize)
rs.Close
'write a jpg file based on what we get from recordset
Open "test.jpg" For Binary Access Write As #1
Put #1, , varBIT()
Close (1)
End SubPrivate Sub Form_Load()
ChDrive App.Path
ChDir App.Path
Dim connstr As String
connstr = "Provider=OraOLEDB.Oracle;" & _
"Data Source=kinghome;" & _
"User ID=knut;" & _
"Password=knut;" & _
"Persist Security Info=True"
Set conn = New ADODB.Connection
conn.CursorLocation = adUseClient
conn.Open connstr
End Sub
Private Sub Form_Unload(Cancel As Integer)
conn.Close
End Sub
测试用过,生成一个和SAMPLE.JPG完全相同的TEST.JPG
注:如果文件很大,可以分段APPENDCHUNK/GETCHUNK
1、生成表,添加一条新纪录:
create table t_lob_test
(id number(5),
col_blob blob);
insert into t_lob_test values (1,empty_blob());2、VB代码(FORM1中有两个BUTTON,COMMAND1、COMMAND2),引用ADO2.5
Option Explicit
Option Base 1
Dim conn As ADODB.ConnectionPrivate Sub Command1_Click()
'open a jpg file for testing
Dim varBIT() As Byte, varFileSize As Long
Open "Sample.jpg" For Binary Access Read As #1
varFileSize = LOF(1)
ReDim varBIT(varFileSize)
Get #1, , varBIT()
Close (1)
'use recordset access to update LOB
Dim rs As ADODB.Recordset, sqlstr As String
sqlstr = "Select * from t_lob_test"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open sqlstr, conn, , adLockOptimistic
rs("col_blob").AppendChunk varBIT()
rs.Update
rs.Close
End SubPrivate Sub Command2_Click()
Dim varBIT() As Byte, i As Long 'open recordset and fetch LOB
Dim rs As ADODB.Recordset, sqlstr As String
sqlstr = "Select * from t_lob_test"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open sqlstr, conn, adOpenDynamic, adLockOptimistic
varBIT() = rs("col_blob").GetChunk(rs("col_blob").ActualSize)
rs.Close
'write a jpg file based on what we get from recordset
Open "test.jpg" For Binary Access Write As #1
Put #1, , varBIT()
Close (1)
End SubPrivate Sub Form_Load()
ChDrive App.Path
ChDir App.Path
Dim connstr As String
connstr = "Provider=OraOLEDB.Oracle;" & _
"Data Source=kinghome;" & _
"User ID=knut;" & _
"Password=knut;" & _
"Persist Security Info=True"
Set conn = New ADODB.Connection
conn.CursorLocation = adUseClient
conn.Open connstr
End Sub
Private Sub Form_Unload(Cancel As Integer)
conn.Close
End Sub
测试用过,生成一个和SAMPLE.JPG完全相同的TEST.JPG
注:如果文件很大,可以分段APPENDCHUNK/GETCHUNK
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货