I am using SqlDataReader to retrieve data from a SQL Server 2012 database:
SqlConnection connection = (SqlConnection)_db.Database.GetDbConnection();
await connection.OpenAsync();
SqlCommand command = new SqlCommand("dbo.[sp_MyStoredPrc] @InputId=1", connection);
var reader = await command.ExecuteReaderAsync();
if (reader.HasRows)
{
while (reader.Read())
{
int? var1 = (int?)reader["Column1Name"];
}
}
When reading a NULL field intfrom the database, it is
reader["Column1Name"]empty, so the code throws an InvalidCastException at run time.
I tried
reader.GetInt32(reader.GetOrdinal("Column1Name"))
but this raises a System.Data.SqlTypes.SqlNullValueException.
I also tried
reader.GetSqlInt32(reader.GetOrdinal("Column1Name"))
which returns null, but the type SqlInt32, and not the int?way I want.
I finished work
if (!reader.IsDBNull(reader.GetOrdinal("Column1Name")))
int? var1 = (int?)reader["Column1Name"];
which is working.
Questions:
devc2