SQLBulkCopy genera valori nulli non validi di InvalidOperationException

c# invalidoperationexception nullable sql sqlbulkcopy

Domanda

Ho un DataTable che sto tentando di caricare, ma mi imbatto nella seguente eccezione:
"Il valore dato di tipo String dall'origine dati non può essere convertito in tipo int della colonna di destinazione specificata."

L'unica ragione per cui posso pensare che possa essere possibile farlo è che ci sono celle vuote nel DataTable che vengono caricate in una colonna di tipo INT. Provo a cambiare tutti i valori vuoti per DBNull.Value, ma non sembra funzionare per questa colonna specifica. Il processo di caricamento è il seguente:

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();
            }
        }
    }

Lo schema che carico è:

[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
)

C'è qualcosa di speciale per quanto riguarda SQLBulkCopy e nullable int coolumns che non conosco? Qualsiasi input è apprezzato.

Risposta accettata

L'input di file errato ha causato errori, ha avuto decimali e non era previsto


Risposta popolare

Hai specificato che il tipo di colonna è int quando aggiungi datacolumns al datatable?



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow