0

Binary(4) データベース テーブル フィールドに挿入しようとしている byte[] 列として、列の 1 つを持つデータ テーブルを含む厳密に型指定されたデータセットがあります。問題なく byte[] 列の値を設定できますが、データテーブルに対して sqlbulkcopy を実行すると、次の例外が発生します。

「データ ソースからの Int32 型の指定された値は、指定されたターゲット列のバイナリ型に変換できません。」

データテーブルは大きなデータテーブルであり、sqlbulkcopy はデータテーブルとデータベース テーブルから byte[]/binary(4) 列を引いたもので正常に動作します。以下は、.NET 2.0 を使用して SqlBulkCopy を壊している挿入したコードです。

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

...

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

1 に答える 1

1

私は自分の問題を発見しました。データ テーブルの Byte[] 列が、対応するデータベース列の序数と同じ序数の位置にありませんでした。データ テーブルの列の序数は 56 でしたが、データベースの列の序数は 8 でした。したがって、データ テーブルを再編成するか、sqlbulkcopy の列マッピングを行う必要がありました。データテーブルの再編成は、はるかに簡単かつ迅速になりました。

于 2010-07-28T12:50:52.117 に答える