sql >> Databasteknik >  >> RDS >> Oracle

System.InvalidCastException:Objekt kan inte castas från DBNull till andra typer

Som felmeddelandet säger är cellens värde DBNull.Value och det kan inte konvertera från det till vad du vill att det ska vara (i det här fallet en long eller en int ). Du måste leta efter DBNull innan du konverterar/castar numret:

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

Eftersom detta lägger till en del irriterande omkostnader, om du gör så här mycket kommer du förmodligen att vilja skapa en hjälpmetod som gör det åt dig.

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

Då kan din kod vara:

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


  1. oracle + java-kodningsproblem vid infogning

  2. Oracle - Hur man skapar en skrivskyddad användare

  3. Lägg till månader till ett datum i SQLite

  4. SQL Ordna efter på flera kolumner