我正在C#中編寫一個函數來創建多個Datatables並將它們插入到數據集中,然後使用SQLBulkCopy將每個Datatable插入到Sql Server數據庫中。我收到此錯誤消息: SQL Server批量插入轉換失敗
異常發生在列isBuget,這是有點。給定的值是String類型?我清楚地看到在我添加的行中有0個。 //創建鉸刀表
DataTable dtreamer = new DataTable();
dtreamer.Columns.Add("quoteID");
dtreamer.Columns.Add("line");
dtreamer.Columns.Add("customer");
dtreamer.Columns.Add("salesman");
dtreamer.Columns.Add("quoteDesc");
dtreamer.Columns.Add("machineModel");
dtreamer.Columns.Add("machineDesc");
dtreamer.Columns.Add("isBudgetary");
dtreamer.Columns.Add("quoteDate");
dtreamer.Columns.Add("notes");
dtreamer.Columns.Add("userName");
dtreamer.Rows.Add(2016099, "Raise bore", "c", "sales", "desc",
"machineModel", "machineDesc", 0, "01/01/2000", "notes","userName");
我沒有看到任何轉換。調試器擊中SQLBulkCopy的「WriteToServer」方法。
//create data set to hold tables
DataSet set = new DataSet();
set.Tables.Add(dtreamer);
set.Tables.Add(dtlineitems);
set.Tables.Add(dtcountries);
set.Tables.Add(dtdiameters);
try
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlBulkCopy copy = new SqlBulkCopy(conn))
{
conn.Open();
copy.DestinationTableName = "Reamers";
copy.WriteToServer(dtreamer);
我見0,不是「0」int Rows.Add方法。你在哪裏看到一個字符串?我錯過了什麼? – dachizzle37
你沒有分配'SqlBulkCopy.ColumnMappings'。如果您不這樣做,SQL Server會假定您將按表格順序提供表中的所有列。它將*不*自動根據名稱映射列。首先將所有使用的列添加到列映射中。 –