Ho fatto semplicemente dei metodi che restituiscono un DataReader.
No, non faccio Dim mioReader as SqlTools etc ma:

codice:
Dim Database as new SqlTools
Database.SQL = Stringasql
Dim reader as SqlDataReader = Database.EstraiDataReader()
Se devi fare un solo codice che funzioni per tutti i provider beh la strada 'a monte' è diversa, il provider deve essere una proprietà che imposti, magari passandogli anche la connectionstring giusta...