IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Accès aux données Discussion :

[ADO.NET][IDbDataAdapter] Comment nommer les tables dans un dataset ?


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut [ADO.NET][IDbDataAdapter] Comment nommer les tables dans un dataset ?
    Habituellement, avec Odbc par exemple, on peut nommer les tables quand on utilise la méthode fill de l'objet OdbcDataAdapter.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    OdbcDataAdapter adapter = ....;
    //....
    DataSet ds=new DataSet();
    adapter.Fill(ds,"matable");
    Ce qui permet par la suite de manipuler les tables en utilisant leur nom plutôt que leur index, ce qui est très appréciable. Seulement, voilà, comment faire quand on travaille sur un composant d'accès aux données, donc avec l'interface IDbDataAdapter ?...

    En effet, IDbDataAdapter n'implémente pas la méthode void Fill(DataSet, string)...

  2. #2
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Certes cependant tu auras bien a passer en paramètre une instance de DataAdapter, donc par Reflection tu dois pouvoir invoquer sa méthode Fill.

  3. #3
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Citation Envoyé par neguib
    tu auras bien a passer en paramètre une instance de DataAdapter
    où ça ?

    Tu es bien obscur, ce soir, neguib :p ou alors c'est moi qui suis fatigué

  4. #4
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Ben les deux certainement, car je suis fatigué également et qu'il est temps que je mette la clé sous la porte jusqu'à demain matin. Si tu as du temps ce soir, met moi un peu de code ou un algo precis de la démarche

  5. #5
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Y'a pas grand chose à part une dll d'accès universel aux données pour le moment...

    Enfin, voilà un 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
    DBConnector.Connect(DataProvider.MySql, "data source=localhost;user id=root;database=test");
    IDbCommand SelectCommand=DBConnector.CreateCommand("SELECT * FROM test");
    IDbCommand InsertCommand=DBConnector.CreateCommand("INSERT INTO test (duration) VALUES (?)",
        new DBParameter(null,DataType.VarChar,20,"duration"));
    IDbCommand UpdateCommand=DBConnector.CreateCommand("UPDATE test SET duration = ? WHERE id = ?",
        new DBParameter(null,DataType.VarChar,20,"duration"),
        new DBParameter(null,DataType.Long,20,"id"));
    IDbCommand DeleteCommand=DBConnector.CreateCommand("DELETE FROM test WHERE id = ?",
        new DBParameter(null,DataType.Long,20,"id"));
    IDbDataAdapter adapter = DBConnector.GetAdapter(
        SelectCommand,InsertCommand,UpdateCommand,DeleteCommand);
     
    DataSet ds = new DataSet();
    adapter.Fill(ds); // Pas d'implémentation de adapter.Fill(DataSet,string)
     
    // TODO modification du DataSet
    ds.Tables [0].Rows [3] ["duration"] = "coucou !"; // Pas pratique.
    // Encore de modifications...
     
    // Et un peu plus loin la mise à jour ou l'annulation des modifs...
    adapter.Update(ds);
    ds.AcceptChanges();

  6. #6
    Invité
    Invité(e)
    Par défaut
    Avec un IDbDataAdapter tu ne peux nommer des tables.
    Y a une seule table et elle s'appelle Table.
    Je n'ai pas encore trouvé de solution à ca hormis implémenter une méthode Fill(DataSet, String).
    Et cette solution a l'air "chaude"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment transformer les tables dans un fichier txt vers une BD comme Mysql
    Par badrdine.in dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 20/03/2009, 12h58
  2. comment regroupe les tables dans une table
    Par helene0618 dans le forum kettle/PDI
    Réponses: 3
    Dernier message: 11/03/2009, 22h18
  3. Réponses: 1
    Dernier message: 19/02/2009, 15h37
  4. Réponses: 5
    Dernier message: 28/11/2005, 09h52
  5. Comment éviter les doublons dans ma table
    Par einegel dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/11/2004, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo