¿Cómo insertar un valor nulo para el campo numérico de un datatable en c #?

c# insert null numeric sqlbulkcopy

Pregunta

Considere mi dato generado dinámicamente contiene los siguientes archivos Id,Name,Mob1,Mob2

Si mi datatable tiene este se inserta con éxito,

Id Name Mob1        Mob2
1  acp  9994564564  9568848526

Pero cuando es así, falla diciendo:

Id Name Mob1        Mob2
1  acp  9994564564  

The given value of type String from the data source cannot be converted to type decimal of the specified target column.

Generando mi datatable leyendo un archivo csv,

    CSVReader reader = new CSVReader(CSVFile.PostedFile.InputStream);
    string[] headers = reader.GetCSVLine();
    DataTable dt = new DataTable();
    foreach (string strHeader in headers)
    {
        dt.Columns.Add(strHeader);
    }
    string[] data;
    while ((data = reader.GetCSVLine()) != null)
    {
        dt.Rows.Add(data);
    }

Cualquier sugerencia sobre cómo insertar un valor nulo para un campo numérico durante BulkCopy en c # ...

EDITAR:

Intenté esto dt.Columns["Mob2"].AllowDBNull = true; pero no parece funcionar ...

Respuesta aceptada

Lo tengo funcionando asignándole un valor nulo ...

if(dr["Mob2"] == "")
  dr["Mob2"] =null;

Respuesta popular

¿Está seguro de que el error no se produce en ningún otro lugar de su aplicación? La dosis de DataColumn incluso sabe que contiene valores decimales y no cadenas, no define su DataType.

De todos modos, el error dice que el problema es una cadena - conversión decimal (no un problema is-null), así que creo que recibes una cadena "" en lugar de nula cuando lees la segunda línea. Intente establecer de forma sencilla los campos de la matriz de datos en nulo si contienen cadenas vacías antes de llamar a Rows.Add



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué