Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

System.InvalidCastException:O objeto não pode ser convertido de DBNull para outros tipos


Como diz a mensagem de erro, o valor da célula é DBNull.Value e não pode converter disso para o que você quiser (neste caso, um long ou um int ). Você precisa verificar se há DBNull antes de converter/lançar o 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);

Como isso adiciona uma sobrecarga irritante, se você fizer isso, provavelmente desejará criar um método auxiliar que faça isso por você.
public static long? getLongFromDB(object value)
{
    if (value == DBNull.Value) return null;
    return Convert.ToInt64(value);
}

Então seu código pode ser:
Int64 id_riga = getLongFromDB((sender as DataGridView).Rows[e.RowIndex].Cells["column_ID"].Value)
    .GetValueOrDefault();