C# 如何找到有问题的专栏?Can';t从字符串转换为int32

C# 如何找到有问题的专栏?Can';t从字符串转换为int32,c#,.net,datatable,sqlbulkcopy,C#,.net,Datatable,Sqlbulkcopy,我正在使用SqlBulkCopy。因此,我创建了一个datatable并指定了它的列,然后向datatable添加行,然后尝试插入它 System.InvalidOperationException为 未经用户代码处理的消息= 字符串类型的给定值 无法将数据源转换为 输入指定目标的int 不过,我一直在犯这个错误。问题是我有3个int列,我不知道它是哪一个 我甚至在每个int列上都加上了它的类型 datatable.Columns.Add("Id", typeof(int)); 似乎仍然有问

我正在使用SqlBulkCopy。因此,我创建了一个datatable并指定了它的列,然后向datatable添加行,然后尝试插入它

System.InvalidOperationException为 未经用户代码处理的消息= 字符串类型的给定值 无法将数据源转换为 输入指定目标的int

不过,我一直在犯这个错误。问题是我有3个int列,我不知道它是哪一个

我甚至在每个int列上都加上了它的类型

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

似乎仍然有问题。因此,在堆栈跟踪或int中,异常会在哪里显示其终止的实际列?

您可以将数据导入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

看看Bruce Dunwiddie的优秀课程。当您遇到这种映射问题时,它在异常消息中提供了非常好的信息。

您有内部异常信息吗?我发现这是一个映射问题。所以您不再有问题了?也许在你的问题中表明了这一点?