SqlBulkCopy with Byte [] Erreur de colonne DataTable

bytearray c# sqlbulkcopy strongly-typed-dataset

Question

J'ai un ensemble de données fortement typé contenant une unité de données avec l'une des colonnes sous la forme d'une colonne d'octet [] que je tente d'insérer dans un champ de table de base de données binary (4). Je peux définir les valeurs de la colonne byte [] sans aucun problème, mais je reçois l'exception suivante lorsque j'exécute sqlbulkcopy sur le datatable:

"La valeur donnée de type Int32 à partir de la source de données ne peut pas être convertie en type binaire de la colonne cible spécifiée."

Le datatable est un grand datatable et le sqlbulkcopy fonctionne bien avec la table datatable et la table de base de données moins les colonnes d'octet [] / binary (4). Ce qui suit est le code que j'ai inséré qui rompt SqlBulkCopy en utilisant .NET 2.0.

byte[] codeByteArray = GetByteArray();
dt.byteArrayCol = codeByteArray;

...

using(SqlBulkCopy bc = new SqlBulkCopy(conn))
{
    bc.DestinationTableName = dt.TableName;
    bc.WriteToServer(dt);
    bc.Close();
}

Réponse acceptée

J'ai découvert mon problème. La colonne Byte [] dans mon datatable n'était pas dans la même position ordinale que l'ordinal de colonne de base de données correspondant. L'ordinal de colonne datatable était de 56 alors que l'ordinal de colonne de base de données était de 8; il fallait donc réorganiser le datatable ou mapper les colonnes pour sqlbulkcopy. Réorganiser le datatable était beaucoup plus facile et rapide.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi