4

我有一个我正在尝试上传的 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 库有什么我不知道的特别之处吗?任何输入表示赞赏。

4

2 回答 2

2

当您将数据列添加到数据表时,您是否指定了列类型int

于 2011-02-24T19:35:19.113 回答
0

错误的文件输入导致错误 - 有小数,不应该

于 2011-09-15T16:24:02.210 回答