9
我正在嘗試使用SqlBulkCopy將一堆數據導入到我們的網站。在大多數其他領域,我們使用的是使用字節數組來表示SQL中的二進制數據的實體模型。但是,SqlBulkCopy似乎將字節[]與字符串混淆。除了這個引發異常的二進制列之外,一切似乎都正常工作:「來自數據源的String類型的給定值不能轉換爲指定目標列的二進制類型。」如何在DataTable中對二進制數據(byte [])使用SqlBulkCopy?
我創建了一個小的測試案例來說明這個問題:
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);
}
}
}
}
}
它使用一個測試數據庫,其中有一個名爲Data
單binary(5)
列BinaryData
表。
任何幫助,將不勝感激