gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:34 25 4
gpt4 key购买 nike

使用 C#、.net 4、Visual Studio 2010 和 SQL Server 2008。

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

  • PG nvarchar(50)
  • nvarchar(50) 部分
  • 销售额 float
  • LostSales float
  • Pareto6 整数
  • p6 图片
  • Pareto5 整数
  • p5 图片
  • Pareto4 整数
  • p4 图片
  • Pareto3 整数
  • p3 图片
  • 当前 Pareto 整数
  • p新建图片
  • 新帕累托整数

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

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();
}
}

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

以下是我得到的错误:

@bulkCopy.WriteToServer(table);
The given value of type Int32 from the data source cannot be converted to type image of the specified target column.

现在我首先想到的是我的SQL表的一个字段中有一个type set wrong,但是检查了很多次,似乎没有错。

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

最佳答案

[时间紧迫,所以我会提示你]

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

关于C# 批量复制到 SQL 表类型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10381125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com