Como você ler uma matriz de bytes de um DataRow em C #?
-
08-07-2019 - |
Pergunta
Eu tenho um DataSet
com um DataTable
que preenche corretamente um único DataRow
através de um TableAdapter
.
Eu sou capaz de extrair dados de DataRow com código como este:
dataFileID = (int)this.dataFileDataRow["DataFileID"];
dataFileName = (string)this.dataFileDataRow["DataFileName"];
dataFileDate = (DateTime)this.dataFileDataRow["DataFileDate"];
Eu tenho uma outra coluna chamada DataFile do tipo varbinary(max)
.
Quando tento extrair dados dessa coluna do mesmo DataRow
como acima eu recebo nada.
byte[] fileFromDatabase = (byte[])this.dataFileDataRow["DataFile"];
Se eu colocar um ponto de ruptura neste local, eu posso olhar para o dataFileDataRow, olhar para a propriedade ItemArray e ver que os dados binários está sentado na posição 5 no ItemArray.
acessoEu tentei o ItemArray diretamente através do seu índice, mas a matriz de bytes não está sendo copiado para a variável fileFromDatabase.
Tenho notado também que a adição de fileFromDatabase para meu relógio produz este erro:
"O nome 'fileFromDatabase' não existe no contexto atual"
A execução ainda está no mesmo bloco como a definição de fileFromDatabase então eu não entendo como seria fora do contexto.
Eu tive conjunto de configuração do Visual Studio para lançamento em vez de depuração. Este foi fazendo-me para não ver as informações de depuração em tempo real que eu estava procurando ao tentar examinar fileFromDatabase. Depois de alternar de lançamento de depuração, eu sou capaz de ver a variável no relógio agora e pode verificar que o código acima está funcionando corretamente.
Solução
O código acima obras, certifique-se de definir o depurador para compilar para Debug, NÃO Release.
Keith