Missing the real questions, but probably the following :
- DBFactory.CreateDabase value should be disposed at the end.
- Moreover you are keeping the last value alive by keeping the reference within you class. Why are “dal, query, ds and cmd” some fields of the class ? They are different each time you run a query. Declare them locally in methods.
- If you call the DatabaseService twice simultaneously, you will really have some strange behavior…