Как вы считываете массив байтов из потока данных в C #?

StackOverflow https://stackoverflow.com/questions/285010

Вопрос

У меня есть DataSet с помощью DataTable это правильно заполняет один DataRow через TableAdapter.

Я могу извлекать данные из потока данных с помощью такого кода:

dataFileID = (int)this.dataFileDataRow["DataFileID"];
dataFileName = (string)this.dataFileDataRow["DataFileName"];
dataFileDate = (DateTime)this.dataFileDataRow["DataFileDate"];

У меня есть еще один столбец под названием DataFile типа varbinary(max).

Когда я пытаюсь извлечь данные этого столбца из того же DataRow как и выше, я ничего не получаю.

byte[] fileFromDatabase = (byte[])this.dataFileDataRow["DataFile"];

Если я поставлю точку останова в этом месте, я смогу заглянуть в dataFileDataRow, заглянуть в свойство itemArray и увидеть, что двоичные данные находятся в позиции 5 в itemArray.

Я попытался получить доступ к itemArray напрямую, используя его индекс, но массив байтов не копируется в переменную fileFromDatabase.

Я также заметил, что добавление fileFromDatabase в мои часы приводит к этой ошибке:

"Имя "fileFromDatabase" не существует в текущем контексте"

Выполнение по-прежнему находится в том же блоке, что и определение fileFromDatabase, поэтому я не понимаю, как это может быть вырвано из контекста.

У меня была настроена конфигурация Visual Studio на Release вместо Debug.Это приводило к тому, что я не видел информацию об отладке в реальном времени, которую я искал при попытке изучить fileFromDatabase.После переключения с Release на Debug теперь я могу видеть переменную в watch и могу убедиться, что приведенный выше код работает правильно.

Это было полезно?

Решение

Приведенный выше код работает, убедитесь, что вы настроили свой отладчик на компиляцию для отладки, а НЕ для выпуска.

Кит

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top