C# 如何找到有问题的专栏?Can';t从字符串转换为int32
我正在使用SqlBulkCopy。因此,我创建了一个datatable并指定了它的列,然后向datatable添加行,然后尝试插入它 System.InvalidOperationException为 未经用户代码处理的消息= 字符串类型的给定值 无法将数据源转换为 输入指定目标的int 不过,我一直在犯这个错误。问题是我有3个int列,我不知道它是哪一个 我甚至在每个int列上都加上了它的类型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)); 似乎仍然有问
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的优秀课程。当您遇到这种映射问题时,它在异常消息中提供了非常好的信息。您有内部异常信息吗?我发现这是一个映射问题。所以您不再有问题了?也许在你的问题中表明了这一点?