This is pretty hard to read without the code blocks, but here some suggestion.
First, I didn't find where you close your connection when you fill the dataset. You seem to open it before filling but never close it. Actually, you don't need to open the connection before calling the Fill()...