У меня есть DataTable, который я пытаюсь загрузить, но я сталкиваюсь со следующим исключением:
"Данное значение типа String из источника данных не может быть преобразовано в тип int указанного целевого столбца."
Единственная причина, по которой я могу думать, что это может быть связано с тем, что в DataTable есть пустые ячейки, загружаемые в столбец типа INT.Я пытаюсь переключить все пустые значения для DBNull.Value, но это не похоже на этот конкретный столбец.Процесс загрузки выглядит следующим образом:
private void UploadTable(string tableName, DataTable table)
{
foreach (DataRow r in table.Rows)
{
foreach (DataColumn c in table.Columns)
if (r[c].ToString().Trim() == "")
r[c] = DBNull.Value;
}
using (SqlBulkCopy copy = new SqlBulkCopy(sqlCon))
{
copy.DestinationTableName = tableName;
try
{
copy.WriteToServer(table);
}
catch (Exception ex)
{
lblError.Content = ex.ToString();
}
}
}
Схема, на которую я загружаю:
[dbo].[table](
[Date] [smalldatetime] NOT NULL,
[Dollar] [varchar](50) NULL,
[CName] [varchar](100) NULL,
[tick] [varchar](10) NULL,
[id1] [varchar](10) NOT NULL,
[Total Quantity] [int] NULL,
[Quantity] [int] NULL
)
Есть ли что-то особенное в SQLBulkCopy и обнуляемых int coolumns, о которых я не знаю?Любой вклад приветствуется.