【问题标题】:OracleDataReader returning empty byte array for BLOB columnOracleDataReader 为 BLOB 列返回空字节数组
【发布时间】:2015-03-25 17:48:27
【问题描述】:

我正在尝试检索在 Oracle 数据库中存储为 BLOB 的证书,但我不断得到一个空字节数组。这是一个代码sn-p:

        OracleCommand command = new OracleCommand(QUERY_GETURLS, connection);

        OracleDataReader reader = null;

        try
        {
            connection.Open();
            reader = command.ExecuteReader();

            while (reader.Read())
            {
                string organization = reader["Organization"].ToString();
                string type = reader["Type"].ToString();
                string url = reader["DestinationUrl"].ToString();
                byte[] certificate = (byte[])reader["Certificate"];

组织、类型和 URL 可以正常返回,但证书字段总是返回一个空字节数组。如果我手动对数据库运行相同的查询,则会返回 BLOB 列。列数据类型是 LONG RAW,我使用的是 ODP.NET。

【问题讨论】:

标签: c# .net oracle odp.net


【解决方案1】:

感谢 MethodMan,我能够找到显示用于 ODP.NET 的数据类型的适当页面:

docs.oracle.com/cd/B28359_01/win.111/b28375/featTypes.htm

我可以将 OracleBinary 用于 LONG RAW。经过进一步研究,Oracle 社区似乎正在从 LONG RAW 转向 BLOB。我要将列数据类型切换为 BLOB 并使用字节数组。

【讨论】:

  • 但是您如何在 .net 中读取 byte[]。我总是得到 [0]?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多