本文介绍了如何使用Oracle.DataAccess将9 MB文件插入Blob字段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
尝试将大型音频文件插入Oracle 10g数据库中并不断出现此错误:
Trying to insert a large audio file into an Oracle 10g database and keep getting this error:
音频文件的字节数组长度为2702577.此过程适用于较小的数组长度,但不适用于较大的数组长度.
The byte array length of the audio file is 2702577. The procedure works with smaller array lengths, but not the larger ones.
这是我的代码,谢谢!
Dim oracleConnection As New OracleClient.OracleConnection
Dim Cmd As New OracleClient.OracleCommand
Dim oracleDataAdapter As New OracleDataAdapter
oracleConnection.ConnectionString = System.Configuration.ConfigurationManager.AppSettings("MasterConnectionODT")
Cmd.Connection = oracleConnection
Cmd.CommandText = "Audio.ADD_AUDIO"
Cmd.CommandType = CommandType.StoredProcedure
Dim aParam As New OracleClient.OracleParameter
aParam.ParameterName = "I_FACILITY_ID_C"
aParam.OracleType = OracleType.Char
aParam.Value = FacID
aParam.Direction = ParameterDirection.Input
Cmd.Parameters.Add(aParam)
aParam = New OracleParameter
aParam.ParameterName = "I_TARP_ID_N"
aParam.OracleType = OracleType.Number
aParam.Value = TarpID
aParam.Direction = ParameterDirection.Input
Cmd.Parameters.Add(aParam)
aParam = New OracleParameter
aParam.ParameterName = "I_AUDIO_BLOB"
aParam.OracleType = OracleType.Blob
aParam.Value = Audio
aParam.Direction = ParameterDirection.Input
Cmd.Parameters.Add(aParam)
Using oracleConnection
oracleConnection.Open()
Cmd.ExecuteNonQuery()
End Using
推荐答案
您不能将大于32k的参数传递到存储过程中.而是将命令更改为SQL.就像这样:
You can't pass parameters larger than 32k into a stored procedure. Change your command to SQL instead. So it would be something like:
Cmd.CommandText = "insert into yourtable values (:I_FACILITY_ID_C, :I_TARP_ID_N, :I_AUDIO_BLOB)"
Cmd.CommandType = CommandType.Text
如果仍然有问题,请尝试使用ODP.Net(如果尚未使用).
If you still have trouble, you try using ODP.Net if you aren't already.
这篇关于如何使用Oracle.DataAccess将9 MB文件插入Blob字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!