Oracle
 sql >> Base de données >  >> RDS >> Oracle

System.InvalidCastException :l'objet ne peut pas être transtypé de DBNull vers d'autres types

Comme le message d'erreur l'indique, la valeur de la cellule est DBNull.Value et il ne peut pas convertir à partir de cela en ce que vous voulez qu'il soit (dans ce cas, un long ou un int ). Vous devez vérifier DBNull avant de convertir/caster le nombre :

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

Parce que cela ajoute des frais généraux ennuyeux, si vous en faites autant, vous voudrez probablement créer une méthode d'assistance qui le fera pour vous.

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

Alors votre code peut être :

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