Use a dataadapter to fill a 'disconnected' dataset. This will keep your connection free. The datareader is what is blocking it.