3

我正在使用 SqlBulkCopy。所以我制作了一个数据表并指定了它的列,然后将行添加到数据表中,然后尝试插入它。

System.InvalidOperationException is unhandled by user code Message=The given value of type String from the data source cannot be convert to type int of the specified target

我一直收到这个错误。问题是我有 3 个 int 列,但我不知道它是哪一个。

我什至在每个 int 列上加上了它的类型。

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

好像还是有问题。那么在堆栈跟踪或 int 异常中的哪个位置会说它死亡的实际列?

4

2 回答 2

4

查看 Bruce Dunwiddie 出色的ValidatingDataReader类。当您遇到此类映射问题时,它会在异常消息中提供非常好的信息。

于 2010-06-05T02:07:13.417 回答
0

您可以将数据导入到 SQL Server 中的表中,然后您可以使用 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 回答