我在C#中编写一个函数来创建几个Datatables并将它们插入到Dataset中,然后使用SQLBulkCopy将每个Datatable插入到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");
我没有看到任何转化。调试器命中" WriteToServer" SQLBulkCopy的方法。
//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 :(得分:2)
虽然您使用的是SqlBulkCopy
,但您应该为每个DataTable
列指定列类型,例如 -
DataTable dtreamer = new DataTable();
dtreamer.Columns.Add("quoteID", typeof(int));
dtreamer.Columns.Add("line", typeof(string));
dtreamer.Columns.Add("customer", typeof(string));
dtreamer.Columns.Add("salesman", typeof(string));
dtreamer.Columns.Add("quoteDesc", typeof(string));
dtreamer.Columns.Add("machineModel", typeof(string));
dtreamer.Columns.Add("machineDesc", typeof(string));
dtreamer.Columns.Add("isBudgetary", typeof(bool));
dtreamer.Columns.Add("quoteDate", typeof(DateTime));
dtreamer.Columns.Add("notes", typeof(string));
dtreamer.Columns.Add("userName", typeof(string));
然后尝试添加行 -
dtreamer.Rows.Add(2016099, "Raise bore", "c", "sales", "desc",
"machineModel", "machineDesc", 0, "01/01/2000", "notes","userName");