使用C#,。net 4,Visual Studio 2010和SQL Server 2008。
我目前有一个名为NewPeriodPareto
的表包含以下列:
以下是我的代码,试图填写表格:
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.WriteToServer(表);
数据源中Int32类型的给定值无法转换为 输入指定目标列的图像。
现在我首先想到的是我的SQL表的某个字段中有一个类型设置错误,但经过多次检查后,似乎没有任何错误。
所以我所追求的是这个小问题的解决方案,甚至是实现相同目标的另一种/更简单的方法,即从DataTable程序填充SQL表。
答案 0 :(得分:0)
[时间不够,所以我打算给你一个暗示]
您应该查看SqlBulkCopy的ColumnMappings。这允许您将源列显式映射到目标。可能会有一些额外的列,如ID或类似的,现在正在使用。