none
Dataset typé en Access et Sql Server RRS feed

  • Question

  • Bonjour,

    Je travaille avec des dataset typés sur une base en Sql Server. Sachant que j'ai une base de même schéma en Access, comment puis-je faire pour que mon code marche toujours avec de légers changements ? Le problème est que le code généré par le dataset contient ceci:

     

    private global::System.Data.SqlClient.SqlConnection _connection;

     

    Et donc évidemment je ne peux pas l'utiliser avec OleDbConnection... "Pas grave mon gars", que je me dis, tu vas créer un autre dataset typé, depuis Access, avec les mêmes éléments.

    Bon après le problème c'est que faudrait que ces deux classes héritent de quelque chose qui me permettre de ne pas écrire deux fois le même code. Donc faudrait sans doute que je bidouille le code généré pour créer cet héritage. Il faudrait que la classe parente ait les tables DataAdapter.

    Quand je regarde le code généré, je me dis que ca va pas être évident.

    Des idées ?

    Cordialement

     

     


    Philippe
    jeudi 9 décembre 2010 17:22

Réponses

  • Bonjour,

    Les TableAdapter généré par Visual Studio sont malheureusement spécifique à une base de données.

    En revanche, il est possible de réutiliser le DataSet tout seul (pour information, un DataSet n'est qu'un conteneur de données) en programmant vous même les accès aux données. Pour cela utilisez les classes de base "DbCommand", "DbConnection",... qui sont les classes de base de toutes les classes des fournisseurs d'accès.

    Par exemple, DbCommand est la classe de base de SqlCommand et OleDbCommand. Aidez-vous aussi de la classe DbProviderFactory (http://msdn.microsoft.com/fr-fr/library/system.data.common.dbproviderfactory.aspx) qui permet de construire des instances d'objets d'ADO .NET.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Marqué comme réponse PhilTheGap vendredi 10 décembre 2010 08:23
    jeudi 9 décembre 2010 20:02
    Modérateur

Toutes les réponses

  • Bonjour,

    Les TableAdapter généré par Visual Studio sont malheureusement spécifique à une base de données.

    En revanche, il est possible de réutiliser le DataSet tout seul (pour information, un DataSet n'est qu'un conteneur de données) en programmant vous même les accès aux données. Pour cela utilisez les classes de base "DbCommand", "DbConnection",... qui sont les classes de base de toutes les classes des fournisseurs d'accès.

    Par exemple, DbCommand est la classe de base de SqlCommand et OleDbCommand. Aidez-vous aussi de la classe DbProviderFactory (http://msdn.microsoft.com/fr-fr/library/system.data.common.dbproviderfactory.aspx) qui permet de construire des instances d'objets d'ADO .NET.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Marqué comme réponse PhilTheGap vendredi 10 décembre 2010 08:23
    jeudi 9 décembre 2010 20:02
    Modérateur
  • Merci de votre réponse. Il semble en effet que je doive laisser tomber le typage.

     

     


    Philippe
    vendredi 10 décembre 2010 08:24