SQLite returns integer fields as longs most of the time, AFAICT. Try something like this (assuming dr is a SQLiteDataReader):
long? tmp = dr.IsDBNull(0) ? (long?)null : dr.GetInt64(0);
or ...
int? tmp = dr.IsDBNull(0) ? (int?)null : (int)dr.GetInt64(0);