【问题标题】:Using SqlBulkCopy with datatable to insert excell records使用带有数据表的 SqlBulkCopy 插入 Excel 记录
【发布时间】:2014-09-10 19:04:01
【问题描述】:

我正在尝试使用 SqlBulkCopy 和数据表将数据插入数据库

我有这个代码

 string mydemo="my demo record";
        DataTable prodSalesData = new DataTable("ProductSalesData");

        // Create Column 1: SaleDate
        DataColumn dateColumn = new DataColumn();
        dateColumn.DataType = Type.GetType("System.String");
        dateColumn.ColumnName = "SaleDate";

        prodSalesData.Columns.Add(dateColumn);


        DataRow dailyProductSalesRow = prodSalesData.NewRow();
        dailyProductSalesRow["SaleDate"] = mydemo;


        // Create DbDataReader to Data Worksheet
        using (OleDbDataReader dr1 = command1.ExecuteReader())
        {
            // Bulk Copy to SQL Server
            using (SqlBulkCopy bulkCopy1 = new SqlBulkCopy(con))
            {

                bulkCopy1.DestinationTableName = "activity1";
                bulkCopy1.ColumnMappings.Add(0, "id");
                bulkCopy1.ColumnMappings.Add(1,"name");
                bulkCopy1.ColumnMappings.Add(2, "activity1first");
                bulkCopy1.ColumnMappings.Add(3, "activity1second");
                bulkCopy1.ColumnMappings.Add(4, prodSalesData.Columns.ToString());
                bulkCopy1.WriteToServer(dr1);

            }
        }

这里 fors 4 记录来自 xcell 文件,但我想将外部数据插入到同一个表中,我尝试了很多,但它给了我这个错误

The given ColumnMapping does not match up with any column in the source or destination.

有什么帮助吗?

谢谢

【问题讨论】:

    标签: c# asp.net c#-4.0


    【解决方案1】:

    触发错误是因为您正在为 4 个 prodSalesData 列(按位置)设置映射,但您只有一列。 ColumnMappings 应该包含从源映射到目标的列,即

    bulkCopy1.ColumnMappings.Add("SaleDate", prodSalesData.Columns.ToString());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 2012-09-12
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多