2013-04-30 50 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