Credimi la domanda non è ovvia perchè nel mondo del lavoro difficilmente si ricorre a creare metodi di connessioni indipendenti dal provider.
Comunque, come hai ben capito ADO e ADO.NET forniscono soluzioni differenti al prooblema della creazione di codice in gradoo di funzionare qualsiasi provider e con ogni tipo di database. In ADO, la soluzione è veramente semplice, poiché è possibile
utilizzare gli stessi oggetti Connection, Command e Recordset di ADO indipendentemente dal provider OLE DB
adottato, e occorre solamente creare correttamente la stringa di connessione da passare al metodo Open
dell’oggetto Connection.
Gli oggetti di ADO.NET definiti nei vari provider ereditano lo stesso insieme fondamentale di membri da una
classe di base o da un’interfaccia comune ma sono, allo stesso tempo, liberi di creare nuove proprietà e metodi per
sfruttare al meglio le caratteristiche di ciascun provider. È possibile avvantaggiarsi della classe di base o
dell’interfaccia comune per creare routine generiche che funzionino con qualunque provider, anche se il codice da
scrivere non è affatto semplice. Di seguito sono riportati alcuni esempi che eseguono operazioni comuni in modo
indipendente dal provider.
Creare una procedura che apra e restituisca un oggetto Connection è relativamente semplice poiché questi
oggetti implementano l’interfaccia IDbConnection. Per capire il tipo di connessione da creare, è sufficiente
verificare se la stringa di connessione contiene l’attributo Provider o Driver:
codice:
Function CreateConnection(ByVal connString As String) As IDbConnection
If connString.ToLower.IndexOf(“provider=”) >= 0 Then
Return New OleDbConnection(connString)
ElseIf connString.ToLower.IndexOf(“driver=”) >= 0 Then
Return New OdbcConnection(connString)
Else
Return New SqlConnection(connString)
End If
End Function
L’oggetto Connection espone un metodo CreateCommand che restituisce l’oggetto Command utilizzato dallo
specifico provider. Tutti gli oggetti Command implementano l’interfaccia IDbCommand, pertanto è possibile
eseguire un comando in modo indipendente dal database come segue:
codice:
‘ Inizia con la stringa di connessione.
Dim connStr As String = BiblioConnString
‘ Decommentare la seguente riga di codice per verificare che funzioni
‘ anche con il provider SQL.
‘ connStr = SqlPubsConnString
‘ Crea un oggetto Connection, lo assegna ad una generica variabile
‘ IDbConnection.
Dim cn As IDbConnection = CreateConnection(connStr)
cn.Open()
‘ Crea un comando su tale connessione.
Dim cmd As IDbCommand = cn.CreateCommand()
‘ Il CommandText deve essere assegnato separatamente.
cmd.CommandText = “DELETE Publishers WHERE City=’Boston’”
cmd.ExecuteNonQuery()
Per leggere i dati restituiti da un comando SELECT è possibile assegnare il risultato di un metodo
ExecuteReader a una variabile IDataReader:
codice:
‘ Ottiene un oggetto DataReader. (Assume che cmd contenga una query SELECT).
Dim dr As IDataReader = cmd.ExecuteReader
‘ Scrive i valori dei campi e chiude il DataReader.
Do While dr.Read
For i As Integer = 0 To dr.FieldCount - 1
Debug.Write(dr(i))
Next
Debug.WriteLine(“”)
Loop
dr.Close()
Ti ho scritto il codice in vb.net sperando che ti possa essere di maggiore aiuto visto che vieni da vb6. Consiglio tra 2 mesi buttalo via e passa a c# 
se hai bisogno di altro.
fai un fischio.
Ciao!