sql >> Database teknologi >  >> RDS >> Oracle

System.InvalidCastException:Objekt kan ikke castes fra DBNull til andre typer

Som fejlmeddelelsen siger, er værdien af ​​cellen DBNull.Value og det kan ikke konvertere fra det til hvad du vil have det til (i dette tilfælde en long eller en int ). Du skal tjekke efter DBNull før du konverterer/caster nummeret:

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

Fordi dette tilføjer nogle irriterende overhead, hvis du gør så meget, vil du sandsynligvis lave en hjælpemetode, der gør det for dig.

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

Så kan din kode være:

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


  1. Udførelse af en Oracle Stored Proc som en anden bruger

  2. Sådan kontrolleres mysql db, om brugeren er en del af en gruppe

  3. Sammenlægning af 3 tabeller/forespørgsler ved hjælp af MS Access Union Query

  4. Sådan gemmer du et billede i postgres-databasen ved hjælp af dvale