¿Cómo se lee una matriz de bytes de un DataRow en C #?
-
08-07-2019 - |
Pregunta
Tengo un DataSet
con una DataTable
que llena correctamente una sola DataRow
a través de un TableAdapter
.
Puedo extraer datos de DataRow con un código como este:
dataFileID = (int)this.dataFileDataRow["DataFileID"];
dataFileName = (string)this.dataFileDataRow["DataFileName"];
dataFileDate = (DateTime)this.dataFileDataRow["DataFileDate"];
Tengo otra columna llamada DataFile del tipo varbinary (max)
.
Cuando intento extraer los datos de esa columna del mismo DataRow
que el anterior, no obtengo nada.
byte[] fileFromDatabase = (byte[])this.dataFileDataRow["DataFile"];
Si pongo un punto de interrupción en esta ubicación, puedo mirar el dataFileDataRow, mirar la propiedad ItemArray y ver que los datos binarios se encuentran en la posición 5 en el ItemArray.
He intentado acceder al ItemArray directamente usando su índice pero la matriz de bytes no se está copiando a la variable fileFromDatabase.
También he notado que agregar fileFromDatabase a mi reloj produce este error:
" El nombre 'fileFromDatabase' no existe en el contexto actual "
La ejecución todavía está en el mismo bloque que la definición de fileFromDatabase, por lo que no entiendo cómo estaría fuera de contexto.
Tenía la configuración de Visual Studio establecida en Release en lugar de Debug. Esto me estaba haciendo no ver la información de depuración en tiempo real que estaba buscando al tratar de examinar fileFromDatabase. Después de cambiar de Release a Debug, ahora puedo ver la variable en el reloj y puedo verificar que el código anterior funciona correctamente.
Solución
El código anterior funciona, asegúrese de configurar su depurador para compilar para depurar, NO liberar.
Keith