2016-07-28 100 views
0

我有一個包含圖像文件路徑的列的數據表。我需要用該圖像的字節數組替換文件路徑。下面的代碼給我錯誤。來自數據源的String類型的給定值無法轉換爲指定的目標列的類型varbinary

來自數據源的String類型的給定值不能被 轉換爲指定目標列的varbinary類型。

for (int rowIncrement = 0; rowIncrement < dt.Rows.Count; rowIncrement++) 
{ 
    byte[] photo = GetPhoto(dt.Rows[rowIncrement]["image"]); 
    dt.Rows[rowIncrement]["image"] = photo; 
    dt.AcceptChanges(); 
} 
using (SqlBulkCopy copy = new SqlBulkCopy(sqlCon, SqlBulkCopyOptions.KeepNulls | SqlBulkCopyOptions.KeepIdentity, null)) 
{ 
    copy.DestinationTableName = "UserDetails"; 
    copy.WriteToServer(dt); 
} 

回答

0

列類型應另有指定的列值仍然是一個字符串,當你需要一個字節[]

實施例:

// ADD a new column since you cannot change the type 

dt.Columns.Add("image_tmp", typeof (byte[])); 

for (int rowIncrement = 0; rowIncrement < dt.Rows.Count; rowIncrement++) 
{ 
    byte[] photo = GetPhoto(dt.Rows[rowIncrement]["image"]); 
    dt.Rows[rowIncrement]["image_tmp"] = photo; 
    dt.AcceptChanges(); 
} 

// REMOVE image column and rename the temporary column 
dt.Columns.Remove("image"); 
dt.Columns["image_tmp"].ColumnName = "image"; 
相關問題