我们拥有自己的基于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?
答案 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