3

SqlBulkCopyを使用しています。そこで、データテーブルを作成し、その列を指定してから、データテーブルに行を追加してから、データテーブルを挿入してみました。

System.InvalidOperationExceptionはユーザーコードによって処理されませんでしたMessage=データソースからのString型の指定された値は、指定されたターゲットのint型に変換できません

しかし、私はこのエラーを受け取り続けます。問題は、私には3つのint列があり、どれであるかわかりません。

私は各int列にそのタイプを入れました。

 datatable.Columns.Add("Id", typeof(int));

まだ問題があるようです。では、スタックトレースまたはintのどこで例外が発生し、実際の列が停止するのでしょうか。

4

2 に答える 2

4

BruceDunwiddieの優れたValidatingDataReaderクラスをチェックしてください。この種のマッピングの問題がある場合は、例外メッセージで非常に優れた情報を提供します。

于 2010-06-05T02:07:13.417 に答える
0

データをSQLServerのテーブルにインポートしてから、ISNUMERICを使用して次のいずれかを確認できます。

SELECT *
  FROM YourImportTable
 WHERE ISNUMERIC(Column1) = 0
    OR ISNUMERIC(Column2) = 0
    OR ISNUMERIC(Column3) = 0

.NETを離れたくない場合は、行をループして変換を試みることができます。

For Each dr as DataRow in datatable.Rows
   If Not IsNumeric(dr.Item(5))
      ' It's this column
   End If
   If Not IsNumeric(dr.Item(6))
      ' It's this column
   End If
Next
于 2010-06-04T22:41:40.560 に答える