SqlBulkCopy mit Byte [] DataTable-Spaltenfehler

bytearray c# sqlbulkcopy strongly-typed-dataset

Frage

Ich habe ein stark typisiertes Dataset, das eine Datentabelle mit einer der Spalten als eine byte [] -Spalte enthält, die ich in ein binäres (4) Datenbanktabellenfeld einzufügen versuche. Ich bin in der Lage, die Byte [] Spalte Werte ohne Probleme zu setzen, aber ich bekomme die folgende Ausnahme, wenn ich sqlbulkcopy auf der Datentabelle ausführen:

"Der angegebene Wert vom Typ Int32 aus der Datenquelle kann nicht in den Typ binary der angegebenen Zielspalte konvertiert werden."

Die Datentabelle ist eine große Datentabelle und die sqlbulkcopy funktioniert gut mit der Datentabelle und der Datenbanktabelle abzüglich der byte [] / binary (4) Spalten. Der folgende Code, den ich eingefügt habe, bricht SqlBulkCopy mit .NET 2.0.

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

...

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

Akzeptierte Antwort

Ich habe mein Problem entdeckt. Die Spalte "Byte []" in meiner Datentabelle hatte nicht dieselbe Ordinalposition wie die entsprechende Ordinalzahl der Datenbankspalte. Die Ordnungszahl der Datentabelle war 56, während die Ordnungszahl der Datenbankspalte 8 war. Daher musste entweder die Datentabelle neu organisiert werden oder die Spaltenzuordnung für sqlbulkcopy. Reorganisation der Datentabelle war viel einfacher und schneller.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow