2010-08-04 17 views
1

J'essaie d'écrire un test qui renvoie un lecteur de données avec l'une des colonnes étant un octet []. J'ai pensé que je peux créer un datatable et créer un lecteur à partir de cela.Ajout d'un octet [] à une ligne de données

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(); 

le problème est quand j'ajoute colValue au datarow au lieu de l'ajouter comme byte[] il ajoute à la ligne comme il est la représentation de chaîne qui est "SqlBinary(18)".

ma question est de savoir comment puis-je ajouter une byte[] réelle à mon datarow

Répondre

1

Selon MSDN:

Si vous créez un DataTable programme, vous devez d'abord définir son schéma en ajoutant des objets DataColumn à DataColumnCollection (accessible via la propriété Columns). Pour plus d'informations sur l'ajout d'objets DataColumn, voir Ajout de colonnes à un DataTable (ADO.NET).

En écrivant cboTable.Columns.Add("ByteArrayColumn");, vous avez défini un nom de colonne, mais pas donné un type, donc la valeur par défaut étant une colonne « string ». Vous devez suivre l'exemple dans le document afin de créer le schéma de la table avant d'ajouter des données à la table.

+0

cboTable.Columns.Add ("ByteArrayProp", typeof (SqlBinary)); était la bonne façon de s'y prendre. –