Как вы читаете байтовый массив из DataRow в C #? - PullRequest
9 голосов
/ 12 ноября 2008

У меня есть DataSet с DataTable, который правильно заполняет один DataRow через TableAdapter.

Я могу получить данные из DataRow с помощью кода, подобного следующему:

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 я теперь вижу переменную в часах и могу убедиться, что приведенный выше код работает правильно.

1 Ответ

3 голосов
/ 12 ноября 2008

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

Keith

...