VB.Net在向ORACLE存储BLOb字段时,系统内存占用很大如何分块存储
我使用的是VS2003的VB.Net在向ORACLE存储BLOb字段时,系统内存占用很大有100多兆,我存储的文件大小为30M,
代码如下:那位高手能否知道如果分块存储(每次存储10240个字节,然后循环存储)的话内存就是马上降下来,请高手指点
Public Sub insertBidDoc(ByVal vTmpFile As String, ByVal vPrjNo As String, ByVal vSprNo As String, ByVal vSprName As String)
Dim oCnOra As New OracleConnection, objCmdOra As New OracleCommand, oAdaOra As New OracleDataAdapter, oTranOra As OracleTransaction
Dim oFileStream As FileStream
Dim iSize As Integer
Try
oFileStream = New FileStream(vTmpFile, FileMode.Open, FileAccess.Read)
iSize = oFileStream.Length
Dim byteArray(iSize - 1) As Byte
oFileStream.Read(byteArray, 0, iSize)
oFileStream.Close()
oCnOra.ConnectionString = GetOracleConStr(strConn)
oCnOra.Open()
objCmdOra.Connection = oCnOra
oTranOra = oCnOra.BeginTransaction
objCmdOra.Transaction = oTranOra
objCmdOra.CommandText = ""
objCmdOra.Parameters.Clear()
objCmdOra.CommandText = "DELETE FROM ReceiveCache_UnParse WHERE Prj_No=:Prj_No AND Spr_No=:Spr_No"
objCmdOra.Parameters.Add("Prj_No", OracleType.Char, 10).Value = vPrjNo
objCmdOra.Parameters.Add("Spr_No", OracleType.VarChar, 20).Value = vSprNo
objCmdOra.ExecuteNonQuery()
objCmdOra.CommandText = ""
objCmdOra.Parameters.Clear()
objCmdOra.CommandText = "INSERT INTO ReceiveCache_UnParse(RCP_ID,RCP_Date,Data_UnParse,Prj_No,Spr_No,Spr_Name,File_Size,File_Ext,RCP_Type) " & _
" VALUES(SEQ_RCP_ID.NEXTVAL,:RCP_Date,:Data_UnParse,:Prj_No,:Spr_No,:Spr_Name,:File_Size,:File_Ext,:RCP_Type)"
objCmdOra.Parameters.Add("RCP_Date", OracleType.Char, 19).Value = Format(Now, "yyyy-MM-dd HH:mm:ss")
objCmdOra.Parameters.Add("Data_UnParse", OracleType.Blob).Value = byteArray
objCmdOra.Parameters.Add("Prj_No", OracleType.Char, 10).Value = vPrjNo
objCmdOra.Parameters.Add("Spr_No", OracleType.VarChar, 20).Value = vSprNo
objCmdOra.Parameters.Add("Spr_Name", OracleType.VarChar, 60).Value = vSprName
objCmdOra.Parameters.Add("File_Size", OracleType.Number, 10).Value = iSize 'oFileStream.Length
objCmdOra.Parameters.Add("File_Ext", OracleType.VarChar, 255).Value = "p7s"
objCmdOra.Parameters.Add("RCP_Type", OracleType.Char, 1).Value = "1"
objCmdOra.ExecuteNonQuery()
oTranOra.Commit()
'oFileStream.Close()
Catch e As Exception
If Not oTranOra Is Nothing Then
oTranOra.Rollback()
End If
Throw e
Finally
If Not (oFileStream Is Nothing) Then
oFileStream.Close()
End If
'防止连接未显式关闭
If (Not (oCnOra.State = ConnectionState.Closed)) Then
oCnOra.Close()
oCnOra.Dispose()
End If
End Try
End Sub