извлечение байтового массива из LONG RAW из oracle db - PullRequest
2 голосов
/ 04 ноября 2011

Я пытаюсь получить данные из длинного необработанного поля в базе данных Oracle 11g. Однако я продолжаю получать «указанное приведение неверно», когда я пытаюсь:

cmd.InitialLONGFetchSize = 1000000;
cmd.AddRowid = true;
byte[] PicTempArray = new Byte[1024];
Oracle.DataAccess.Client.OracleDataReader Reader = cmd.ExecuteReader();

int i = 0;
while (Reader.Read())
{
   try
      {
      PicTempArray[i] = Reader.GetByte(0);
      }
   catch
      {
      }
   i++;
}

Я не удивлюсь, если сделаю несколько неправильных вещей. Если вы не догадались, LONG RAW содержит некоторые данные изображения. Любой совет приветствуется.

1 Ответ

3 голосов
/ 04 ноября 2011

GetByte используется для извлечения одного байта из числового столбца.

Вы хотите GetBytes вместо. Вам, вероятно, следует также прочитать документацию для получения данных LONG и LONG RAW.

(Кроме того, я надеюсь, что у вас на самом деле нет пустого блока catch - и ваш код был бы более идиоматичным, если бы вы использовали camelCase для имен локальных переменных и вышли из скобок для Блоки try и catch, как и для блока while.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...