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

时间:2012-10-25 11:40:36

标签: c# oracle enterprise-library

我们拥有自己的基于Microsoft企业数据访问块的DataAccess库。

我有一个存储过程,它将二进制文件内容作为输入参数并将其存储到DB中。

byte[] imageFileByteArray = this.GetByteArrayFromFile(imageFile);
this.dataAccess.AddCmdParameter("DOCIMAGE", System.Data.DbType.Binary, imageFileByteArray);

这个代码在使用SQL数据库时工作正常,但是当我切换到Oracle时,我得到的异常是“参数类型错误”

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

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

2 个答案:

答案 0 :(得分:1)

您将需要使用OracleParameter,其中包含OracleType枚举值Blob,有关详细信息,请参阅此处...

http://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracletype.aspx

答案 1 :(得分:0)

这可能与System.Data.DbType的OracleDbType的不同Oracle推断有关。 System.Data.DbType.Binary具有相应的OracleDbType = Raw。您必须使用System.Data.DbType.Object来获取OracleDbType = Blob,有关详细信息,请参阅http://docs.oracle.com/html/B14164_01/featOraCommand.htm中的表3-3