从 EnterpriseLibrary 获取 LONG RAW 数据(字节)

Obtaining LONG RAW Data (Bytes) from EnterpriseLibrary

我在从 oracle 获取图像字节数据时遇到问题。 reader("image") 总是返回 0 长度。他们有什么解决方法吗?如果我使用 oledb 那么它可以工作但不能使用 Microsoft EnterpriseLibrary.

using (IDataReader reader = ExecuteNonQueryOracle(Query)) 
    {
            while (reader.Read) {
                dict("image") = reader("image");
            }
    }
public object ExecuteNonQueryOracle(string Query)
{

        using (dbCommand == CurrentDatabase.GetSqlStringCommand(Query)) {
            dbCommand.CommandType = CommandType.Text;
            return CurrentDatabase.ExecuteReader(dbCommand);
        }

}

尝试使用 OracleDataReaderOracleBlob 作为数据类型:

using (OracleDataReader reader = cmd.ExecuteReader())
{
   while (reader.Read())
      {
         if (!reader.IsDBNull(reader.GetOrdinal("FILE")))
               {
                 OracleBlob doc = reader.GetOracleBlob(reader.GetOrdinal("FILE"));
                  if (!doc.IsNull)
                   {
                       docBytes = new byte[doc.Length];
                       doc.Read(docBytes, 0, (int)doc.Length);
                   }
               } 
      }
}

如果 ExecuteNonQuery 方法返回 0,那么一个原因可能很明显,即您的查询的 where 子句与 table(s) 中的任何行都不匹配。

我从网上得到了这个帖子,这可能有帮助

另一个发生在我身上的案例是,当我使用企业库数据应用程序块使用 ExecuteNonQuery 方法执行更新 sql 查询时,我使用数据库对象的 AddInParameter 方法传递输入参数顺序与我更新中的参数顺序不匹配 sql 特别是 where clause.So 中的输入参数 一旦我在 AddInParameter 子句的末尾使用 AddInParameter 传入 where 子句参数,问题就解决了立即。