sql >> Database >  >> RDS >> Oracle

System.InvalidCastException:Object kan niet worden gecast van DBNull naar andere typen

Zoals de foutmelding zegt, is de waarde van de cel DBNull.Value en het kan daar niet van worden omgezet naar wat je maar wilt (in dit geval een long of een int ). U moet controleren op DBNull voordat u het nummer converteert/cast:

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

Omdat dit wat vervelende overhead met zich meebrengt, wil je, als je dit vaak doet, waarschijnlijk een hulpmethode maken die dit voor je doet.

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

Dan kan je code zijn:

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


  1. SQL-query om het N-de hoogste salaris uit een salaristabel te vinden

  2. Is het mogelijk om een ​​geschiedenis te krijgen van vragen die in postgres zijn gemaakt?

  3. Waarom script retourneren Fout met deze code in php?

  4. Controleer of er al een specifieke mysql-verbinding bestaat tijdens een php-script?