Oraclebinary: чтение данных в C # .NET

#c# #oracle #binary #blob #oracleclient

#c# #Oracle #двоичный #клякса #oracleclient #большой двоичный объект

Вопрос:

Я пытаюсь прочитать некоторые двоичные данные из Oracle, используя System.Data.Пространство имен OracleClient в C # .NET.

Как мне преобразовать данные из значения класса OracleBinary в целое число?

             OracleConnection conn = new OracleConnection("Data Source=database;User Id=me;Password=me;");
            OracleCommand cmd = new OracleCommand("Select * From SomeData.TableName WHERE vid = 4527", conn);
            conn.Open();

            OracleDataReader reader = cmd.ExecuteReader();
            try
            {
                while (reader.Read())
                {
                    OracleBinary obj = reader.GetOracleBinary(5);
                    // here....
                }
            }
            finally 
            {
                reader.Close();
            }

            cmd.Dispose();

            conn.Close();
            conn.Dispose();
  

В документации к этой базе данных в определении столбцов указано, что тип данных — LONG RAW и «Значения хранятся в двоичном формате большого объекта (BLOB)».

Я ожидал от большого двоичного объекта несколько целых чисел (отрицательных и положительных).

не уверен, что кто-нибудь может помочь, поскольку я больше не могу обратиться к администратору (перешел). Если бы кто-нибудь мог указать мне направление, я был бы очень признателен.

РЕДАКТИРОВАТЬ: Просто для расширения (я пропустил немного информации) того, что содержит большой двоичный объект:

Вектор значений журнала местоположения, такой, что первый элемент является первым измеренным значением глубины, второй элемент — первым истинным значением глубины по вертикали, третий элемент — первое смещение по x, четвертый — первое смещение по y, пятый — вторая измеренная глубина

Большое спасибо, Роб

Комментарии:

1. Содержит ли большой двоичный объект только целое число?

2. Судя по всему, это массив байтов

Ответ №1:

Как мне преобразовать данные из значения класса OracleBinary в целое число?

Вот оно:

 OracleBinary obj = reader.GetOracleBinary(5);
byte[] bytes = obj.Value;
int value = BitConverter.ToInt32(bytes);
  

Но вы уверены, что это то, чего вы действительно хотите? Целочисленные значения обычно не хранятся в больших двоичных объектах… Большие двоичные объекты предназначены для хранения произвольных двоичных данных, таких как изображение.

Комментарии:

1. просто добавил немного информации, если это вообще поможет, вот и все, что у меня есть!

2. @роб, информация, которую вы добавили, важна, но этого недостаточно… вам нужно знать фактический тип значений в большом двоичном объекте, чтобы иметь возможность их прочитать. Это целые числа или числа с плавающей запятой? Каков их размер?