Bonsoir,
je cherche à developper une application indépendante de la base de données. En d'autres termes, je souhaite que cette appli soit compatible avec n'importe quelle base de données (Sqlserver, MySql....) et que le client final puisse choisir quelle base implémenter.

Je ne trouve pas comment récupérer un "reader" commun avec les differents types de connecteurs.

Pour être clair, je voudrais écrire une fonction générique qui me renvoi un datareader quelque soit la base de données en face.

exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
' ===================================================================
    ' Execution requete générique SQL de type SELECT
    ' Paramètres : strSql = Requête Sql à exécuter
    ' Retourne   : DataReader
    ' Fonction qui doit appeler la bonne fonction selon le paramétrage
' ===================================================================
    Public Function Sql_Select(ByVal strSql)
 
        If nTypeBDD = BDD_SQLSERVER Then
            Sql_Select = SqlServer_Select(strSql)
        ElseIf nTypeBDD = BDD_MYSQL Then
            Sql_Select = MySql_Select(strSql)
        ElseIf nTypeBDD = BDD_ODBC Then
            Sql_Select = Odbc_Select(strSql)
        Else
            Sql_Select = OleDb_Select(strSql)
        End If
 
    End Function
 
    ' ===================================================================
    ' Execution requete SQL BDD SQLServer
    ' Paramètres : strSql = Requête Sql à exécuter
    ' Retourne   : RecordSet
    ' ===================================================================
    Public Function SqlServer_Select(ByVal strSql) As SqlClient.SqlDataReader ' voir common.dbDatareader
 
        oCn.ConnectionString = "Data Source=" & strServer & ";User Id=sa ;Initial Catalog=" & strDatabase & ";Connection TimeOut=10"
 
        oCn.Open()
        '
        Dim rdSql As New SqlClient.SqlCommand
        rdSql.Connection = oCn
        rdSql.CommandType = CommandType.Text
        rdSql.CommandText = strSql
 
        Dim MyReader As SqlClient.SqlDataReader
        MyReader = rdSql.ExecuteReader
 
        SqlServer_Select = MyReader
 
 
    End Function
 
 
    Public Function MySql_Select(ByVal strSql) 'As SqlClient.SqlDataReader
......
Existe-t-il une solution autre que de passer par notre bon vieil ODBC (est-ce possible d'ailleurs ?????).

Si qq1 à une idée je suis preneur !