C# 大容量复制到 SQL 表类型问题



Using C#, .net 4, Visual Studio 2010, and SQL Server 2008.

我目前有一个名为NewPeriodPareto的表,其中包含以下列:

  • PG nvarchar(50(
  • 零件(50(
  • 销售浮动
  • 损失销售浮动
  • Pareto6 int
  • P6 图片
  • Pareto5 int
  • P5 图像
  • Pareto4 int
  • P4 图片
  • Pareto3 int
  • P3 图像
  • 当前帕累托 int
  • p新图像
  • NewPareto int

以下是我尝试填充表格的代码:

private void CreateNewPeriod()
{
        DataSet dsDG = new DataSet();
        DataTable dt = new DataTable();
        dsDG = (DataSet)ParetoGrid.DataSource;
        dt = dsDG.Tables[0];
        string ThetableName = "NewPeriodPareto";
        BulkInsertDataTable(myConn, ThetableName, dt);
}
public static void BulkInsertDataTable(string connectionString, string tableName, DataTable table)
{
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlBulkCopy bulkCopy =
                new SqlBulkCopy
                (
                connection,
                SqlBulkCopyOptions.TableLock |
                SqlBulkCopyOptions.FireTriggers |
                SqlBulkCopyOptions.UseInternalTransaction,
                null
                );
            bulkCopy.DestinationTableName = tableName;
            connection.Open();
            bulkCopy.WriteToServer(table);
            connection.Close();
        }
}

如您所见,提供的代码尝试从我的数据表中复制数据。数据表绑定到"我的数据网格"源。

以下是我得到的错误:

@bulkCopy.写入服务器(表(;
数据源中 Int32 类型的给定值无法转换为 键入指定目标列的图像。

现在我想的第一件事是我的SQL表的一个字段中有一个类型集错误,但是经过多次检查,似乎没有任何问题。

所以我所追求的是这个小问题的解决方案,甚至是实现相同目标的替代/更简单的方法,即从程序数据表中填充SQL表。

[时间紧迫,所以我要给你一个提示]

您应该查看 SqlBulkCopy 的 ColumnMappings。这允许您将源的列显式映射到目标。现在可能有一些额外的列,如 ID 或类似列。

最新更新