Pergunta

Estou tentando escrever um teste que retorne um leitor de dados com uma das colunas sendo um byte []. Imaginei que posso criar um DataTable e criar um leitor a partir disso.

var cboTable = new DataTable("CBOTable");
var colValue = new SqlBinary(ASCII.GetBytes("Hello This is test"));

cboTable.Columns.Add("ByteArrayColumn");
cboTable.Rows.Add(colValue);

var reader= cboTable.CreateDataReader();

O problema é quando eu adiciono colValue para o Dataarow em vez de adicioná -lo como um byte[] Ele adiciona à linha, pois é a representação de string que é "SqlBinary(18)".

Minha pergunta é como adicionar um real byte[] para o meu Dataarow

Foi útil?

Solução

De acordo com Msdn:

Se você estiver criando um Datatable programaticamente, deve primeiro definir seu esquema adicionando objetos de datacolumn ao DataColumnCollection (acessado através da propriedade Columns). Para obter mais informações sobre como adicionar objetos de datacolumn, consulte Adicionando colunas a um Datatable (ADO.NET).

Por escrito cboTable.Columns.Add("ByteArrayColumn");, você definiu um nome de coluna, mas não recebeu um tipo, por isso é padrão ser uma coluna "String". Você deve seguir o exemplo no documento para criar o esquema da tabela antes de adicionar dados à tabela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top