SQLBulkCopy выбрасывает InvalidOperationException Nullable Ints - PullRequest
4 голосов
/ 24 февраля 2011

У меня есть 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, о которых я не знаю?Любой вклад приветствуется.

Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

Вы указали тип столбца int при добавлении столбцов данных в таблицу данных?

0 голосов
/ 15 сентября 2011

Неправильный ввод файла вызвал ошибки - в нем были десятичные дроби, и он не должен был

...