Your logic has a small flaw:
Read returns true if it has data, so
a.Read() && b.Read()
is true if and only if a and b both have data.
(a.Read() && b.Read()) == false
if true if either of a or b does not contain data, or if both do not
If you want your statement executed only when neither have data, then you want
!a.Read() && !b.Read()
Which is true only when they are both empty.
So you want to code it as:
if ( !ac_key_number_dr.Read() && !cc_key_number_dr.Read() && !key_number_dr.Read() && !hybrid_key_number_dr.Read() && !transmission_key_number_dr.Read())