For one thing, a datareader is forward-only, so you can't go through it again.

You get to decide here. If you want to move forwards, backwards, sideways, etc., a dataset is probably more appropriate. However, datasets are more versatile, and thus a slight bit slower (you may not notice this). You can certainly refresh the dataset at any time, and any changes to the underlying database will appear in the refreshed dataset.

However, you could also just close the datareader and re-create it. If you will move through it many times fairly quickly, this is probably not a good idea, but if you will only move through it every now and then, it might be easier to simply create a new datareader each time.