sql >> Base de Datos >  >> RDS >> Oracle

System.InvalidCastException:el objeto no se puede convertir de DBNull a otros tipos

Como dice el mensaje de error, el valor de la celda es DBNull.Value y no se puede convertir de eso a lo que quieras que sea (en este caso, un long o un int ). Debe verificar DBNull antes de convertir/emitir el número:

Int64 id_riga = 0;
object value = (sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value;
if(value != DBNull.Value) 
    id_riga = Convert.ToInt64(value);

Debido a que esto agrega una sobrecarga molesta, si hace tanto, probablemente querrá crear un método auxiliar que lo haga por usted.

public static long? getLongFromDB(object value)
{
    if (value == DBNull.Value) return null;
    return Convert.ToInt64(value);
}

Entonces su código puede ser:

Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
    .GetValueOrDefault();