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

C# Discussion :

c# mode déconnecté [Fait]


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut c# mode déconnecté
    bonjour, j'aimerai dans un formulaire créer une source de donnée en mode déconnecté afin de remplir 3 listes déroulantes. (aucune liaison entre elles)

    cependant je n'arrive pas à créer cette source de donnée !

    suite à un autre post ou j'explique un autre problème sur la création de source de donnée par assistance, cette fois ci j'essaie de tout coder, pour contourner le problème.

    j'ai commencé comme ceci:


    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
     
                DataTable forma = new DataTable();
                DataTable grammage = new DataTable();
                DataTable produit = new DataTable();
     
                DataSet source_commande = new DataSet();
                source_commande.Tables.Add(forma);
                source_commande.Tables.Add(grammage);
                source_commande.Tables.Add(produit);
     
                MySQLDataAdapter adapter_commande = new MySQLDataAdapter("SELECT for_nom FROM forma", maconnexion);
     
                MySQLDataAdapter adapter_commande = new MySQLDataAdapter("SELECT gra_nom FROM grammage", maconnexion);
     
                MySQLDataAdapter adapter_commande = new MySQLDataAdapter("SELECT pro_nom FROM produit", maconnexion);           
                maconnexion.Close(); // déconnexion
    erreur sur MySQLDataAdapter:
    Le type ou le nom d'espace de noms 'MySQLDataAdapter' est introuvable


    comment bien déclarer MySQLDataAdapter ?

    existe t-il un moyen plus simple ?

    j'ai un peu de mal la lol

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    C'est MySqlDataAdapter (attention aux majuscules/minuscules...)
    Et il faut ajouter au projet une référence à l'assembly MySql.Data.dll, et mettre un "using MySql.Data.MySqlClient;" dans ton fichier source

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    oui pour le reste j'avais déja rajouté tout sa ! oups pour la majuscule merci !


    sinon après quand j'ai stocké toutes ces informations je peux les utiliser n'importe ou dans mon programme ? (même plusieurs fenetres)

    euh finalement j'ai eu doute pour savoir si j'ai mis une référence à l'assembly MySql.Data.dll comment je peux le voir ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par noobyyy Voir le message
    sinon après quand j'ai stocké toutes ces informations je peux les utiliser n'importe ou dans mon programme ? (même plusieurs fenetres)
    Il faut mettre le using dans chaque fichier source où tu t'en sers

    Citation Envoyé par noobyyy Voir le message
    euh finalement j'ai eu doute pour savoir si j'ai mis une référence à l'assembly MySql.Data.dll comment je peux le voir ?
    Dans l'explorateur de solution, dans ton projet il y a un "dossier" Références qui contient les assemblies référencés

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    ok merci ! et sinon comment je peux faire pour mettre mon résultat dans une liste déroulante ? par quel moyen puis-je utiliser mon adapter_forma ?

    MySqlDataAdapter adapter_forma = new MySqlDataAdapter("SELECT for_nom FROM forma", maconnexion);

    liste déroulante: comboBox_format // se situe dans un autre formulaire


    sinon une autre question au démarrage de mon application je crée cette source, donc j'ai plus besoin de refaire ceci pour les autres fenetres ?

    car actuellement je crée cette source au load de mon programme pour pouvoir utiliser cette source sur tout mon logiciel. Cependant comment l'appeler sur une autre fenetre ?

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par noobyyy Voir le message
    ok merci ! et sinon comment je peux faire pour mettre mon résultat dans une liste déroulante ? par quel moyen puis-je utiliser mon adapter_forma ?
    Il faut passer par une DataTable (d'ailleurs un DataAdapter ne sert à rien si tu n'utilises pas de DataTable...)
    http://dotnet.developpez.com/articles/ado2/csharp/

    Citation Envoyé par noobyyy Voir le message
    sinon une autre question au démarrage de mon application je crée cette source, donc j'ai plus besoin de refaire ceci pour les autres fenetres ?

    car actuellement je crée cette source au load de mon programme pour pouvoir utiliser cette source sur tout mon logiciel. Cependant comment l'appeler sur une autre fenetre ?
    Il faudrait que tu la mettes à un endroit accessible de partout, par exemple comme membre statique d'une classe (ou mieux, comme membre d'instance d'une classe singleton)

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    si tu regardes mon code plus haut j'ai déja crée mon datatable je suis bloqué au DataAdapter. que veut tu dire par classe singleton ?

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par noobyyy Voir le message
    si tu regardes mon code plus haut j'ai déja crée mon datatable je suis bloqué au DataAdapter
    commence par lire le tuto que je t'ai indiqué, si tu ne t'en sors pas il sera toujours temps de poser des questions... je ne vais pas faire un cours dans le forum rien que pour toi alors qu'il y en a déjà un

    Citation Envoyé par noobyyy Voir le message
    que veut tu dire par classe singleton ?
    "Singleton" est un design pattern ("patron de conception") qui sert à limiter à 1 le nombre d'instances d'une classe. Plus d'infos ici :
    http://fr.wikipedia.org/wiki/Singlet..._de_conception)
    ou ici :
    http://www.dofactory.com/Patterns/PatternSingleton.aspx

    En gros, tu pourrais avoir une instance de ton DataSet qui serait partagée dans une classe Database :
    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
     
    public class DataBase
    {
        public DataSet DataSet { get; set; }
     
        // Le constructeur est privé pour qu'on ne puisse pas
        // directement créer un instance de la classe
        private DataBase()
        {
            this.DataSet = new DataSet();
        }
     
        // implémentation du pattern Singleton
        private static DataBase _instance = null;
     
        public static DataBase GetInstance()
        {
            // Lazy-loading : on initialise le singleton lors du premier accès
            if (_instance == null)
            {
                _instance = new DataBase();
            }
            return _instance;
        }
     
    }
    Pour l'utiliser, tu fais comme ça (à partir de n'importe où dans le programme) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DataBase db = DataBase.GetInstance();
    ...
    adapter.Fill(db.DataSet, "nom_de_la_table");

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    edit: mouai je ne sais pas trop ! lol
    je continue mes recherches...

    edit2:
    help: je m'en sors pas lol

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    comment faire pour corriger l'erreur suivante:

    Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet, string)'

    en utilisant:
    DataSet oDataSet = new DataSet("cmd");
    MySqlDataAdapter.Fill(oDataSet, "cmd");

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    MySqlDataAdapter est un type, pas une instance d'objet. Il faut créer une instance de MySqlDataAdapter (comme tu l'avais fait dans ton premier post) et appeler Fill dessus

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    si tu veux en parrallelle j'essaie de faire une connexion en mode déconnecté pour stocké 3 tables pour 3 listes déroulantes.

    et de l'autre côté je veux utiliser un datagridview pour afficher toute mes commandes mais dans mes deux cas je suis bloqué !

    cas 1: je suis perdu

    cas 2:

    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
     
                // Connexion à la base de données
                string connexion = "Server=192.168.0.39;Port=3306;Database=db_commande;Uid=PSEUDO;Pwd=MDP;";
                maconnexion = new MySqlConnection(connexion);
                maconnexion.Open(); // Ouverture
     
     
                DataSet dataset_commande = new DataSet();
                DataTable commande = new DataTable();
                dataset_commande.Tables.Add(commande);
     
                MySqlDataAdapter adapter_commande = new MySqlDataAdapter("SELECT * FROM commande WHERE co_sta=0", maconnexion);
     
                DataView MonDataView = new DataView(dataset_commande.Tables["commande"]);
                DataView MonDataView = dataset_commande.Tables["commande"].DefaultView;
     
    //erreur: Une variable locale nommée 'MonDataView' est déjà définie dans cette portée
    dans mon formulaire j'ai mon dataGridView_attente ou j'aimerai mettre le résultat de ma requete mais comment gérer les colonnes ? il faut que dans ma requete je choisisse dans l'ordre ce qui'l sera mis dans mon datagridview ?

    edit:
    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
     
                // Connexion à la base de données
                string connexion = "Server=192.168.0.39;Port=3306;Database=db_commande;Uid=PSEUDO;Pwd=MDP;";
                maconnexion = new MySqlConnection(connexion);
                maconnexion.Open(); // Ouverture
     
                MySqlDataAdapter adapter_commande = new MySqlDataAdapter("SELECT co_ref, co_fich, co_dat, co_qte, co_del FROM commande WHERE co_sta=0", maconnexion);
     
                DataSet dataset_commande = new DataSet();
                adapter_commande.Fill(dataset_commande, "commande");
     
                DataTable commande = new DataTable();
                dataset_commande.Tables.Add(commande);
     
                DataView MonDataView = dataset_commande.Tables["commande"].DefaultView;
    et lorsque je j'exécute :


    ... help

    sa suffisait pas sa:
    grant all privileges on db_commande to developer with grant option ??

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par noobyyy Voir le message
    dans mon formulaire j'ai mon dataGridView_attente ou j'aimerai mettre le résultat de ma requete mais comment gérer les colonnes ? il faut que dans ma requete je choisisse dans l'ordre ce qui'l sera mis dans mon datagridview ?
    Soit tu mets dataGridView1.AutoGenerateColumns = true, dans ce cas il génère tout seul les colonnes, dans l'ordre renvoyé par la requête
    Soit tu définis explicitement les colonnes dans le designer, en indiquant pour chacune quelle champ de la requête elle doit afficher (propriété DataPropertyName de la colonne)

    Citation Envoyé par noobyyy Voir le message
    et lorsque je j'exécute :


    ... help

    sa suffisait pas sa:
    grant all privileges on db_commande to developer with grant option ??
    Euh... à vrai dire je suis pas expert en administration MySQL
    Ce qui est bizarre, c'est le "@vl8", qui semblerait indiquer que tu travailles sur la base "vl8", alors que tu as spécifié "Database=db_commande" dans la chaine de connexion

    Sinon ton dernier code est à peu près correct, à part que ça sert à rien d'ajouter une nouvelle table au dataset, puisqu'elle est déjà créée par le Fill. Donc ces 2 lignes ne servent à rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                DataTable commande = new DataTable();
                dataset_commande.Tables.Add(commande);

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    pour mes soucis d'accès a la base de donnée en faite c'est bon c'est réglé ! des soucis avec grant, en faite j'avais donnée accès a la base de donnée a mon utilisateur, mais en faite il faut lui rajouter chaque table en plus ! donc pour ceci c'est réglé et par la même occasion l'assistant détecte mes champs dans vues.

    euh sinon pour ce qui est du reste bah oui pour mon datagridview écoute javais donné des noms a mes colonnes !, jvais essayer de trouver la soluce avec tes indications.

    sinon le vl8 étant le nom de la machine.

    sinon mon code est comme sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                // Connexion à la base de données
                string connexion = "Server=192.168.0.39;Port=3306;Database=db_commande;Uid=PSEUDO;Pwd=MDP;";
                maconnexion = new MySqlConnection(connexion);
                maconnexion.Open(); // Ouverture
     
                MySqlDataAdapter adapter_commande = new MySqlDataAdapter("SELECT co_ref, co_fich, co_dat, co_qte, co_del FROM commande WHERE co_sta=0", maconnexion);
     
                DataSet dataset_commande = new DataSet();
                adapter_commande.Fill(dataset_commande, "commande");
     
                DataView MonDataView = dataset_commande.Tables["commande"].DefaultView;
    comment lui dire que cette source ira dans le bon datagridview ? car dans mon formulaire j'en aurai 2

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dataGridView1.DataSource = MonDataView;

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    franchement merci beaucoup, cas 2 résolu !

    maintenant il faut que j'exploite le mode déconnecté, je te tiens au courant

    sinon aurais tu un lien pour utiliser le timer en c# ?

    je t'explique ce que je veux faire sur le formulaire liste.cs

    j'utilise 2 datagridview donc 2 requetes et j'aimerai faire une mise à jour automatique de ce formulaire exemple: toutes les 5 minutes sa actualise le formulaire.

    merci

  17. #17
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    J'ai pas de lien, mais c'est super simple...
    - tu poses un composant timer sur ton formulaire
    - tu définis sa propriété Interval (en millisecondes, donc pour 5mn ça fait 5 * 60 * 1000 = 300000)
    - tu mets sa propriété Enabled à true pour l'activer
    - et tu gères son évènement Tick pour rafraichir les données

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    yeah ta raison c'est super simple, je m'attendais à un truc plus dur ! merci encore

    pour ce qui est du mode déconnecté, je ne peux pas créer ma source de donnée: a savoir que c'est 3 tables mais sans aucun lien l'une entre elles

  19. #19
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    c'est peut-être un bug de l'assistant... tu peux toujours créer les tables à la main dans le designer de dataset

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    c'est bon j'ai la soluce ! en faite il faut donner les droits sur la table proc de la base de donnée mysql

    tout fonctionne.

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

Discussions similaires

  1. VB, mode déconnecté, exploiter les résultats
    Par G'rominet dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/01/2008, 10h13
  2. Execution de Procedures stockées en mode déconnecté
    Par ninsekh dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/10/2007, 11h43
  3. Gestion des requetes de type select en mode déconnecté
    Par ninsekh dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/10/2007, 20h56
  4. Réponses: 4
    Dernier message: 11/05/2006, 16h57
  5. [Vb.net][Ado.net] mode déconnecté avec sql
    Par hoummass dans le forum Accès aux données
    Réponses: 6
    Dernier message: 27/11/2005, 15h10

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