2009-12-16 36 views
0

我正在研究一種採用csv文件並將數據放入sqlserver的軟件。我現在測試它與壞數據,當我讓一個數據字符串長(一行)被導入數據庫中我得到的錯誤:字符串或二進制數據將被截斷語句已終止。這是正常的,這就是我應該期待的。現在我想在更新數據庫之前檢測這些錯誤。有沒有什麼聰明的方法來檢測這個?知道在更新數據庫時是否會截斷一個字符串

我的軟件工作方式是我導入數據集中的每一行,然後向用戶顯示將要導入的數據。然後他可以點擊一個按鈕來進行實際更新。然後我做一個dataAdapter.Update(數據集,「東西」)來更新數據庫。

問題在於錯誤行終止了所有更新並報告了錯誤。所以我想在我更新服務器之前檢測錯誤,以便插入其他行。

謝謝

回答

1

您將不得不檢查每一行的列。查看是否超過了數據庫中指定的最大值,如果是,請將其排除在插入之外。

不同的解決方案是顯式截斷數據並插入截斷的內容,這可以通過使用SubString來完成。

+0

問題是我不知道服務器上的varchar的大小。一個意思我知道它,但它可以改變客戶端服務器,所以我不能假設一個長度。所以我需要一種方法來請求在服務器上的長度 – 2009-12-16 16:37:12

1

,我知道的唯一方法是預先檢查信息架構的字符數限制:

Select 
    Column_Name, 
    Character_Maximum_Length 
From 
    Information_Schema.Columns 
Where 
    Table_Name = 'YourTableName' 
0

或者,如果你有你的數據庫上開了一個記錄,另一種解決方案是瀏覽字段對象使用其長度截斷字符串。例如,使用ADO記錄集/ VB代碼,你可能會有這樣的代碼:

myRecordset.fields(myField) = left(myString, myRecordset.fields(myField).DefinedSize)