Conclusion
In the first article in this series, I discussed the DataReader and concluded that it isn't meant to be used as a data container. That's hardly surprising. In this article, I discussed untyped and typed DataSets, which, are very nice data containers. DataSets are especially good thanks to all their built-in functionality. If you can benefit from that, DataSets are a winning choice. But I also raised the point that DataSets aren't great regarding performance and maintainabilitymore about that in an upcoming article.
Don't miss the third article in this series, about wrapped containers and generic containers.