Oracle
 sql >> Datenbank >  >> RDS >> Oracle

System.InvalidCastException:Das Objekt kann nicht von DBNull in andere Typen umgewandelt werden

Wie die Fehlermeldung sagt, ist der Wert der Zelle DBNull.Value und es kann es nicht in das umwandeln, was Sie wollen (in diesem Fall ein long oder ein int ). Sie müssen nach DBNull suchen vor dem Konvertieren/Casting der Nummer:

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

Da dies etwas lästigen Overhead hinzufügt, möchten Sie wahrscheinlich eine Hilfsmethode erstellen, die dies für Sie erledigt, wenn Sie so viel tun.

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

Dann kann Ihr Code sein:

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