You might find reference source interesting. The filling is done in class
DbDataAdapter
in method called
FillInternal
.
If you investigate the code you'll see that the connection is opened and closed unless it's already open. If the connection is initially in open state, it's left that way.
Have a look at
Reference Source - DbDataAdapter[
^]