c# - SQLBulkCopy 抛出 InvalidOperationException 可空整数

标签 c# sql nullable sqlbulkcopy invalidoperationexception

我有一个要上传的数据表,但遇到以下异常:
“无法将数据源中 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 有什么我不知道的特别之处吗?感谢任何输入。

最佳答案

在向数据表中添加数据列时,是否将列类型指定为 int

关于c# - SQLBulkCopy 抛出 InvalidOperationException 可空整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109448/

相关文章:

mysql:将未知类型(字符串/整数)参数存储到数据库的最有效方法

Mysql,仅选择可用的公司并按一个或多个日期时间范围排除其余公司(当它们不起作用时)

c# - "timespan?"在 C# 中是什么意思?

c# - MVC、MVP 和 MVVM 设计模式在编码 c# 方面有什么区别

c# - 将复杂结构编码到 C#

c# - 发布表单但不发布 View 状态

C# 在使用反射时确定一个 Nullable 属性 DateTime 类型

c# - 使用 C# 从 Google Chrome 获取当前选项卡的 URL

php - 使 sql 子查询停止提示重复列

c# - 如何在 C# 中将空值设置为 int?