我有一个我正在尝试上传的DataTable,但我遇到了以下异常:
“数据源中String类型的给定值无法转换为指定目标的int类型柱。”SQLBulkCopy抛出InvalidOperationException可空的Ints
我认为它可能会这样做的唯一原因是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一些特别的东西?任何输入赞赏。
它在哪里抛出错误?在'copy.WriteToServer(table); 'line? – 2011-02-24 19:34:25
@Abe Miessler - 更可能 - 是的 - 这可能是因为默认类型是字符串,他需要指定int。 – JonH 2011-02-24 19:35:48
是的,就是这条线。 – SeanVDH 2011-02-24 19:35:57