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#/ADO.net] mode déconnecté


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut [C#/ADO.net] mode déconnecté
    bonjour a tous.

    je viens m'adresser à vous car j'ai un souci. j'ai un TP a faire pour l'école dont le but est de développé un lecteur audio style ITunes (que j'ai jamais utilisé) ou Winamp. le lecteur doit gérer les playlists a l'aide d'une base de donnée (le but étant de mettre en pratique ce qu'on a "appris" et no de faire un programme optimisé). j'arrive à utiliser ADO.net en mode connecté, mais dans le cadre du TP on doit utiliser le mode déconnecté. la base de donnée est fourni (au format .mdf) et directement insérée dans le projet.

    j'arrive à peupler mes ListBox ou mes comboBox avec des champs de table, mais moi il me faut des requêtes paramétrées. comme je fais tout avec le Wizard (on appris comme ça mais on a pas été jusqu'aux requête paramétrées) je ne sais pas comment faire en sorte que la requête prenne en compte mes paramétre.

    voila un screen de l'appli

    en faite, je voudrai que quand on choisi un playlist, la liste genre contienne tout les genre de music de cette playlist, puis le champ artist, tout les artist de la playlist et du genre sélectionne et ainsi de suite.

    j'aimerais savoir aussi comment faire un INSERT quand on clique sur un bouton (pour pouvoir ajouter une playlist par exemple).

    j'ai regardé les tuto sur ADO.net mais ça ma embrouillé plus qu'autre chose.

    voila, j'espére que vous pourrez m'aider.

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Les didacticiels sont ce qu'on a de plus simple, si tu as des difficultés en les lisant, il y a assez peu de choses que nous puissions faire. A moins que tu aies une question précise...
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Et surtout qu'il faut le rendre ce soir hein (ahah tu te demandes qui je suis).

    Pis bon tu n'étais pas obligé d'utiliser le mode déconnecté c'est juste écrit conseillé.

    Pour faire des requêtes paramétrées bah tu peux utiliser une procédure stockée tu rajoutes ensuite une nouvelle Query dans ton DataSet et la méthode Fill ou Get prendra en paramètre les arguments de ta procédure.
    Ou sinon sans les procédures stockées tu rajoutes dans clauses Where à ta Command (toujours après avoir fait Add Query sur ton DataSet) et tu mets des trucs du genre WHERE playListId = @id
    Ensuite pareil la méthode Fill ou Get prendre en paramètre un argument qui sera l'id.

    [EDIT] Et pour faire un Insert ben c'est pareil clic droit sur le dataset -> Add Query et là tu choisis une query de type Insert. C'est super clic clic le mode déconnecté.

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Par défaut
    Tu travail sur quoi derrière ? tu reste très très vague, si c'est une datatable c'est en fonction du state de ta Row que la mise à jour est effectuée. Apres tu dois générer la requete d'insertion manuellement (InsertCommand) en remplacant les valeurs (champs) que tu envoi par des parametres et tu fait un mappage entre ton DataColumn et le parametre
    Les modos ont raison, si tu ne comprends pas les tutos (même si ils ne sont pas très clair) il faut que tu te pause des questions sur ta compréhention globale de ADO .Net et que tu repasse un peut de temps pour remprendre à 0 > t'y gagnera au final

  5. #5
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Si je ne me trompe pas c'est un SQL Express derrière et il utilise un Dataset fortement typé donc DataTable typé mais surtout on peut ajouter plein de requêtes au Adapter (comme je l'ai indiqué dans mon post plus haut).

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut
    Skyrunner > c'est a rendre dimanche euh... mais non je vois pas qui tu es lol

    pour moi c'est bien le problème que ce soit que du clic clic je trouve. le mode connecté j'y arrive parce que j'ai vu un code. pour le mode déconnecté je sais pas trop. j'ai ajouté un datasource a ma liste de playlist et sur ma combobox genre j'ai mi un autre datasource avec un requété paramétrée et je ne trouve pas comment passer les attributs a la requété dans le code et executer la requête.

    enfin je vais re tenter. aujourd'hui est un jour nouveau et je suis frais et dispo.

  7. #7
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    Et si tu essayes de créer une requête avec le Designer (click droit, new sql ...) qui remplit un DataSet ou DataTable avec des paramètres (Select * From List Where ListCategory = :ListCateg)

    Lors du lancement de l'application, tu remplis ton DataSet ou DataTable à l'aide de ton TableAdapter et tu "bind" ta PlayList à ce DataSet, ça pourrait t'aider ?


    ADO.NET en mode déconnecté n'est pas très compliqué à prendre en main comme ça a été dit plus haut, 3 clicks avec les Designers et tu crées toutes les requêtes que tu veux.

    --> Skyrunner alors comme ça c'est toi le prof ?

  8. #8
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par nightcyborg Voir le message
    Skyrunner > c'est a rendre dimanche euh... mais non je vois pas qui tu es lol

    pour moi c'est bien le problème que ce soit que du clic clic je trouve. le mode connecté j'y arrive parce que j'ai vu un code. pour le mode déconnecté je sais pas trop. j'ai ajouté un datasource a ma liste de playlist et sur ma combobox genre j'ai mi un autre datasource avec un requété paramétrée et je ne trouve pas comment passer les attributs a la requété dans le code et executer la requête.

    enfin je vais re tenter. aujourd'hui est un jour nouveau et je suis frais et dispo.
    Toutes mes excuses alors j'ai confondu avec le site où je suis actuellement, c'est qui ton formateur ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut
    mon formateur c'est Kévin Drouvon (oups, j'aurais peu être pas du te le dire ^^).

    j'ai vraiment du mal a saisir. et le tuto que j'ai récupéré ici ben c'est pas ce que j'appel du simple. c'est Utiliser-ADO.net.

    je récapitule.

    j'ai un dataset nommé miniItunesDataSet qui contient toutes mes tables.
    je l'ai associé a ma listbox listPlaylists pour lister le contenu de la table Playlist.
    ensuite j'ai associé le même dataset a ma combobox comboGender au quel j'ai ajouté une requête (SELECT t.TrackID, artist, Name, Genre, Album, path, time FROM dbo.Tracks t, dbo.PlaylistDetails d WHERE d.TrackID=t.TrackID AND d.PlaylistID=@playlistid).
    sur l'événement listPlaylists_SelectedIndexChanged j'essaye de renseigner le paramétre de la requété.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tracksTableAdapter.FillGenre(miniITunesDataSet.Tracks, int.Parse(listPlaylists.ValueMember));
    comboGender.Refresh();
    mais je ne trouve pas ce que je dois mettre en premier paramétre de FillGenre().





    je crois que je vais passer tout ça en mode connecté (puisqu'effectivement on a la droit), ça sera plus rapide.

  10. #10
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Drouvin ^^

    Et pour la méthode Fill tu dois lui mettre en paramètre une DataTable en fait il va Fill (remplir) cette DataTable avec tes données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MiniITunesDataSet.TracksData datatable = new MiniITunesDataSet.TracksData();
     
    xxx.Fill(datatable, 1);
    Et là ta DataTable est remplie.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut
    j'ai fais ça dans mon Form1_Load :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try
    {
                    datatable = new MiniITunesDataSet.TracksDataTable();
                    tracksTableAdapter.FillGenre(datatable, int.Parse(listPlaylists.ValueMember));
     
    }
    catch (Exception ex)
    {
     
                    MessageBox.Show("erreur : " + ex);
    }
    mais ça me génère une FormatException.

    ps : oui je savais que c'était Drouvin mais j'ai rippé lol

  12. #12
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    Ton paramètre doit être mal passé d'après moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int.Parse(listPlaylists.ValueMember)
    Essaye avec une valeur en dur pour tester.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut
    tu as raison, si je rentre directement un nombre il n'y a plus d'exception.

    en fait le probléme vient du fait que je n'arrive pas à récupérer l'id de la playlist. en fait j'affiche la nom des playlist et j'ai dit dans la propriété valueMamber de la listPlaylists de retourner l'ID. mais a la place il me retourne le nom du champs (PlaylistID).

  14. #14
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    C'est donc ton paramètre qui n'est pas au bon format ou la méthode int.Parse elle-même qui génère l'exception.

    assures-toi que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int.Parse(listPlaylists.ValueMember)
    renvoie bien le format attendu de ton paramètre.


    Sinon ça marche ?

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut
    j'ai édité mon message précédent. en fait c'est bien ça.

    int.Parse(listPlaylists.ValueMember) me renvoi le nom du champ au lieu de sa valeur. et je ne trouve pas de méthode ou d'attribut dans ValueMember me permettant de la récupérer.

  16. #16
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    Essaye SelectedText ou DisplayMember, je ne sais plus lequel affiche la valeur.

  17. #17
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    C'est pas plutôt la combobox qui est mal remplie ?

    Normalement DisplayMember c'est le nom et ValueMember l'id plutôt non ?

    Je crois que c'est pas très clair ce que je dis.

  18. #18
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    oui c'est ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    comboBox1.DataSource = MaSourceDeDonnees;
    comboBox1.ValueMember = "ID";  // ça c'est ID non affiché
    comboBox1.DisplayMember = "Name"; // ça c'est la colonne à afficher
    Donc pour changer la valeur affichée du ComboBox, il faut changer sa ValueMember (ID) et le texte s'affichera en conséquences.
    Je ne sais plus si tu peux directement changer le texte grâce à DisplayMember

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 136
    Par défaut
    la j'essaye juste de récupéré la valeur séléctionnée dans ma listbox qui s'appel listPlaylists.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MessageBox.Show(this, listPlaylists.ValueMember);
    j'ai essayé ça aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MessageBox.Show(this, listPlaylists.Items[listPlaylists.SelectedIndex].ToString());
    j'ai mi c'est 2 lignes dans mon form_load et aussi quand la selection de la listbox change.

    quand a SelectedText ça ne semble pas exister

  20. #20
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    listsPlaylist est de quel type ?

    T'as pas listPlaylists.SelectedItems ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Probleme Ado.NET mode deconecté
    Par karimot dans le forum Windows Forms
    Réponses: 0
    Dernier message: 26/01/2014, 13h43
  2. [Débutant] ado.net mode deconnecté
    Par saintjuste dans le forum ADO.NET
    Réponses: 1
    Dernier message: 13/03/2013, 13h05
  3. ADO.NET : Mode connecté ou déconnecté?
    Par rabihm81 dans le forum ADO.NET
    Réponses: 4
    Dernier message: 08/04/2011, 16h04
  4. Spécialisation MERISE avec ADO.NET en déconnecté.
    Par cherrytree37 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 12/01/2010, 19h25
  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