Mira, puedes empezar por separar tu capa de acceso a datos, de hecho hay im ejemplo muy bueno para poderlo hacer, se llama Data Access Application Block para el manejo precisamente de dataset, readers, SP, con SQL Server.
Checa éste link:
http://msdn.microsoft.com/library/de...ml/daab-rm.asp
Está disponible tanto para c# como vb.net

.
Pruebalo y cualquier cosa por aqui andamos.
Salu2