We can't see your code, and we have no idea what "SQLDataReader breaks when it comes to the first row with some null values" actually means in the real world.
But ... the most likely reason for problems is that you aren't checking for null returns and are just blindly casting the values to string or whatever. That won't work: NULL values are essential in Foreign Keys, or it becomes very hard to insert rows in the first place - so you have to allow for them in your code by explicitly checking for DBNull.Value when you process DataReader values:
object o = myDateReader["MyColumn"]
if (o == DBNull.Value)
{
myString = "";
}
else
{
myString = (string) o;
}