C# 在C语言中将二进制文件存储到Oracle Blob字段#

C# 在C语言中将二进制文件存储到Oracle Blob字段#,c#,oracle,enterprise-library,C#,Oracle,Enterprise Library,我们有自己的DataAccess库,它建立在Microsoft企业数据访问块的基础上 我有一个将二进制文件内容作为输入参数并将其存储到数据库中的存储过程 byte[] imageFileByteArray = this.GetByteArrayFromFile(imageFile); this.dataAccess.AddCmdParameter("DOCIMAGE", System.Data.DbType.Binary, imageFileByteArray); 这段代码在使用SQL数据库时

我们有自己的DataAccess库,它建立在Microsoft企业数据访问块的基础上

我有一个将二进制文件内容作为输入参数并将其存储到数据库中的存储过程

byte[] imageFileByteArray = this.GetByteArrayFromFile(imageFile);
this.dataAccess.AddCmdParameter("DOCIMAGE", System.Data.DbType.Binary, imageFileByteArray);
这段代码在使用SQL数据库时运行良好,但当我切换到Oracle时,我得到一个异常,即“参数类型错误”

在oracle db中,DOCIMAGE列声明为BLOB字段


为什么推断的Dbtype.Binary不适用于oracle?

您需要使用OracleParameter,使用OracleType枚举值Blob,请参阅此处了解更多信息


这可能与Oracle从
System.Data.DbType
对OracleDbType的推断不同有关。
System.Data.DbType.Binary
具有相应的OracleDbType=Raw。您必须使用
System.Data.DbType.Object
来获取OracleDbType=Blob,有关更多详细信息,请参见

中的表3-3,正如我所提到的,我们使用的是我们自己的DAL dll,它不接受除DbType以外的显式OracleType。我尝试了,我得到以下错误。“无法将type System.Byte[]绑定为Blob。”但在本文中,在将它从DbType.Object更改为DbType.Binary后,他使它工作起来。不管怎样,这对我都不起作用。有什么建议吗?