title: DataReader: Specified cast is not valid (Int32)
body: <p>Why does SqlDataReader throw an exception when converting 0 to integer?</p>
  
  <pre><code>?dataReader(3)
  0 {Short}
      Short: 0
  ?dataReader.GetInt16(3)
  0
  ?dataReader.GetInt32(3)
  {"Specified cast is not valid."}
      _HResult: -2147467262
      _message: "Specified cast is not valid."
      Data: {System.Collections.ListDictionaryInternal}
      HelpLink: Nothing
      HResult: -2147467262
      InnerException: Nothing
      IsTransient: False
      Message: "Specified cast is not valid."
      Source: "System.Data"
      StackTrace: "   at System.Data.SqlClient.SqlBuffer.get_Int32()     
                      at System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)"
      TargetSite: {Int32 get_Int32()}
  </code></pre>