2010-01-04 12 views
9

Web sitemize bir sürü veri aktarmak için SqlBulkCopy kullanmaya çalışıyorum. Diğer alanların çoğunda, SQL'de ikili verileri temsil etmek için bayt dizilerini kullanan Varlık modelini kullanıyoruz. Ancak, SqlBulkCopy dizgeyle bayt [] karıştırıyor gibi görünüyor. Her şey bir istisna atar bir ikili sütun dışında her şey çalışıyor gibi görünüyor: "Veri kaynağından tür dize verilen değeri belirtilen hedef sütunun ikili türüne dönüştürülemez." Bu Data adlı tek binary(5) sütunu olan bir BinaryData tabloya sahip bir test veritabanını kullanırSqlBulkCopy'yi bir DataTable'da ikili verilerle (bayt []) nasıl kullanabilirim?

using System.Data; 
using System.Data.SqlClient; 

namespace SqlBulkCopyTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      DataTable table = new DataTable("BinaryData"); 
      table.Columns.Add("Data"); 

      for (int i = 0; i < 10; i++) 
      { 
       var row = table.NewRow(); 
       row["Data"] = new byte[5] { 1, 2, 3, 4, 5 }; 
       table.Rows.Add(row); 
      } 

      using (var connection = 
       new SqlConnection("Data Source=localhost\\sqlexpress;Initial Catalog=TestBulkCopy;Integrated Security=True")) 
      { 
       connection.Open(); 
       using (var copier = new SqlBulkCopy(connection)) 
       { 
         copier.DestinationTableName = table.TableName; 
/* EXCEPTION HERE: */ copier.WriteToServer(table); 
       } 
      } 
     } 
    } 
} 

:

Sorunu göstermek için küçük bir test vakası oluşturduk.

Herhangi bir yardım büyük Yerine

cevap

8

mutluluk duyacağız:

table.Columns.Add("Data"); 

bir ikili olarak "Veri" sütununu ekleyin:

table.Columns.Add("Data", typeof(Byte[])); 
İlgili konular