OracleDataReader为BLOB列返回空字节数组

时间:2015-03-25 17:48:27

标签: c# .net oracle odp.net

我试图在Oracle数据库中检索存储为BLOB的证书,但我一直收到一个空的字节数组。这是一个代码段:

        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。

1 个答案:

答案 0 :(得分:1)

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

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

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