2013-04-30 60 views
0

我正在使用SqlBulkCopy类将数据集插入到我的SQL Server数据库中的一对表中。SqlBulkCopy - InvalidOperationException - 导致此问题的字段

有时输入数据不能很容易地转换为目标列所需的数据类型。这会导致InvalidOperationException以下描述:

数据源中String类型的给定值无法转换为指定目标列的smalldatetime类型。

设置InnerException说:Failed to convert parameter value from a String to a DateTime.

我在我的表中的多个日期时间字段;我怎样才能找出哪个字段导致异常?

+1

你应该显示你的代码 – 2013-04-30 09:04:07

+0

您好Jens,只是为了澄清:我的问题是没有找到为什么这是引发异常。我想要的是一种方法来找出,无论何时在此代码的生命中的任何时候这种类型的异常提出, – svenv 2013-04-30 09:12:54

回答

0

在将数据添加到DataSet之前,您可以尝试自己转换数据。这应该强调不妥协的数据。

+0

谢谢,我会和这一起走,这将允许我实际向我的用户展示一条可用的消息系统 – svenv 2013-04-30 09:43:49

0

我有一个类似的问题在几个月前。我解决这个问题的方式是确保我的DataSet只有一条记录用于测试,然后将所有DateTime字符串设置为简单日期(例如01/01/2000)。如果您仍然收到错误,那么它将取决于数据库中DateTime字段的格式,而不是字符串中的单个日期,而不是字符串中的格式。

在我的情况下,这是由于老式的英国和美国的日期格式!我的数据库使用英国,但一些字符串日期使用美国格式。

+0

这就是因为你离日本很近,他们有一个一致的lsb到msb的规定 – 2013-04-30 12:05:17

1

唯一的解决办法是划分征服。做测试插入缺少列,直到你已经隔离了列或使用isdate函数创建一个选择(如果可能是过时的范围问题,以找到哪些列或行有问题,请创建一个选择

+0

+1,你也可以使用'SqlBulkCopy.BatchSize','SqlBulkCopy.NotifyAfter'和'SqlBulkCop y.SqlRowsCopied'尝试识别出现问题的第一行,然后检查该行。 – 2013-04-30 09:46:49

相关问题