出错的原因是某些列名不一致,即使所有列都显示为 true。
以下代码段导致此错误:
foreach (DataColumn column in dataTable.Columns)
sqlBulkCopy.ColumnMappings.Add(column.ColumnName, column.ColumnName);
sqlBulkCopy.ColumnMappings 的数据来自 Datatable,然后你用它来和 Datatable 中的列名做对比,它永远是相等的。
我认为您应该将 Datatable 的列名与数据库中表的列名进行比较。
我建议你使用以下代码来检查它:
using (SqlCommand command = new SqlCommand("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'scoretable'", sqlConnection))
{
DataTable columnNames = new DataTable();
columnNames.Load(command.ExecuteReader());
int i = 0;
foreach (DataColumn column in dataTable.Columns)
{
string columnNameInDB = columnNames.Rows[i++]["COLUMN_NAME"].ToString();
Console.WriteLine("{0}\t{1}\t{2}", column.ColumnName, columnNameInDB, columnNameInDB == column.ColumnName);
}
}
如果回复有帮助,请点击“接受答案”并点赞。 注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。