C# – DBNull check for ExecuteScalar

c++dbnullsql

The stored procedure for command can return null.Is it correct way to check if the returned value is null or should I also check that obj is null?

object obj = command.ExecuteScalar();
int id = -1;
if (DBNull.Value == obj)
{
   id = Convert.ToInt32(obj );
}

Best Solution

You probably want to change your if-statement to

if (obj != null && DBNull.Value != obj) { 
    ... 
}

Right now you're trying to convert if obj == DBNull.Value.