2012-02-14 20 views
11

kullanarak veri tablosu takamıyorum, söz konusu sütunlar nvarchars bulunmaktadır.Bu aşağıdaki sütunlarla ve DB benim kodudur SqlBulkCopy

SqlBulkCopy bulkCopy = new SqlBulkCopy(connection, 
System.Data.SqlClient.SqlBulkCopyOptions.Default, transaction); 

bulkCopy.DestinationTableName = "Test"; 
bulkCopy.ColumnMappings.Add("Number", "Code"); 
bulkCopy.ColumnMappings.Add("Type", "Type"); 
bulkCopy.ColumnMappings.Add("Group", "Group"); 
bulkCopy.ColumnMappings.Add("Short Text", "ShortText"); 
bulkCopy.ColumnMappings.Add("Text", "Description"); 
bulkCopy.WriteToServer(dataTable); 

Ben toplu kopyasını kullanarak, bir veritabanında bir bütün veri tablo eklemek için çalışıyorum ama bu hatayı alıyorum:

The given value of type String from the data source cannot be converted to type nvarchar of the specified target column.

+0

Bize benzeri bazı tablo yapıları, kod ve göstermek gerekir - sadece bu hata ile, muhtemelen size yardımcı olamaz ..... - kontrol ediniz http://tinyurl.com/so-hints –

+0

bkz veri kaynağı Kaynakta geçersiz veriler olabilir. –

cevap

18

bir çok-kısa sütuna kaynaklanabilir olabilir O . ShortText sütununuz NVARCHAR (30) olarak tanımlanmışsa ve 40 karakter diziniz varsa, bu hatayı alabilirsiniz. Örneğin için buraya bakınız: http://forums.asp.net/p/1228890/2212376.aspx

+0

Bingo! Bu benim sorunumdu. İyi ipucu ve 'tüm hikayeyi' size söylemeyen bir hata mesajı örneği. – NateJ

+0

Harika! Hayatımı kurtardım;) – Icarus

4

Bu soru için başka cevabım var, belki de birisi için kullanışlı gelebilir. " (tırnak işareti) içeren bir String'iniz varsa, bu hata mesajını da alırsınız. En azından bu hata mesajını aldım ve yanlış satırı aradım ve bunu buldum. Tırnak işaretlerini kaldırdığımda, hata ortadan kalktı.

+0

Bu hatayı çözmeye çalışırken saatlerimi harcadım ve bunun da benim için suçlu olduğu ortaya çıktı. Kaynak veritabanımdaki tüm verileri bir Excel elektronik tablosuna kopyaladım, bozuk karakter için sayfa aradım ve bir örnek buldum. – Krondorian

+0

Tırnak işareti ile çalışmasını sağlamanın bir yolu var mı, yoksa bir şekilde içe aktardıktan sonra bunları yeniden yerleştirmek için bir yol var mı? –