0

我们有自己的基于 Microsoft Enterprise Data Access 块的 DataAccess 库。

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

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

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

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

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

4

2 回答 2

1

您将需要使用带有 OracleType 枚举值 Blob 的 OracleParameter,有关更多信息,请参见此处...

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

于 2012-10-25T11:45:15.350 回答
0

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

于 2012-10-25T11:50:16.427 回答