OracleDataReader возвращает пустой байтовый массив для столбца BLOB

1

Я пытаюсь получить сертификат, хранящийся как BLOB в базе данных Oracle, но я продолжаю получать пустой массив байтов. Вот фрагмент кода:

        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.

  • 2
    Вы смотрели на сопоставления OracleDataType здесь msdn.microsoft.com/en-us/library/yk72thhd%28v=vs.110%29.aspx
  • 1
    OracleDataReader reader возможно, BinaryReader будет работать или посмотрите на эту ссылку devart.com/dotconnect/oracle/articles/lob.html
Показать ещё 2 комментария
Теги:
odp.net

1 ответ

0
Лучший ответ

Благодаря MethodMan я смог найти соответствующую страницу, которая показывает, какие типы данных использовать для ODP.NET:

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

Я могу использовать OracleBinary для LONG RAW. После дальнейших исследований кажется, что сообщество Oracle уходит от LONG RAW и к BLOB. Я собираюсь переключить свой тип данных столбца на BLOB и использовать массив байтов.

  • 0
    Но как вы рад байт [] в .net. Я получаю [0] все время?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню