Allora devi usare il metodo SQLConnection.GetSchema(string) che ritorna un Datatable di cui puoi usare la proprietà Dataset per ottenere il dataset del database (non so se tipizzato o meno)

Credo che funzioni così, non l'ho mai fatto. Quello che ho appena scoperto arriva da MSDN.

Poi, comunque, l'utente deve scegliere quali campi e quali tabelle interrogare.

Buon lavoro.