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 :

recherche dans une base de données SQL


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 5
    Points
    5
    Par défaut recherche dans une base de données SQL
    Bonjour,

    Je suis à la recherche d'une solution pour un projet.

    Actuellement mon projet ne fait que d'afficher les données de clients (Nom, adresse,etc) dans divers textBox et je navigue d'un client à l'autre à l'aide du control bindingNavigator.

    Je souhaiterais pouvoir faire une recherche sur un seul critère unique (puisqu'il s'agit du n° national du client) qui est dans ma table "clients".

    J'ai donc ajouté un label, un textbox et un bouton dans mon bindingNavigator. J'ai créé un évenement qui vide la textbox de son contenu une fois le bouton de recherche cliqué. Le plus difficile reste à faire: Lancer la recherche dans la table "clients" et afficher les diverses informations dans les différents textBox.

    J'ai fait des recherches sur google et dans ce forum mais je ne vois rien qui correspond à ce que je souhaite mettre en place.

    Quelqu'un l'a-t-il déjà fait ? Je suppose que oui.

    Quelqu'un voudra-t-il bien m'aider et me metre au moins sur la piste ?

    Je précise que je débute et qu'il faudra peut-être se montrer patient.

    Merci d'avance

  2. #2
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Bonjour divos et bienvenu en c#
    Comme tu es débutant en c#, tu devras jeter un coup d'oeil sur les tutoriaux c# qui pillulent sur ce site. Après, si tu rencontres des problèmes, nous serons là

  3. #3
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Cherche des tuto sur ADO.NET pour te familiariser avec les base de données. Tu peux aller voir ici

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses.

    J'étais déjà allé faire un tour de ce côté là mais je ne me souviens pas d'y avoir lu un élément de réponse.

    Je vais donc me replonger dans ma lecture(car j'avais imprimé quelques tutoriaux)

    Merci

  5. #5
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Une question en passant : sais-tu manipuler les DataGridView, ListView , DataSet, DataView, SqlCommand et cie?

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Oui, de ce côté là je pense que cà peut aller. Je ne connait certainement pas tout mais bon...

    Je ne dis pas que j'y arrive toujours dès mon premier essai mais je les manipule régulièrement au cours de mes nombreux essais.

    Actuellement, dans mon projet, j'utilise d'ailleurs des sqlDataAdapter, SqlConnection, un dataSet, des dataGridView et un databindingsource.

    Dans la pratique, je travaille dans un premier temps sur un projet brouillon (avec la base de donnée Northwind)où je fais tous et n'importe quoi jusqu'à ce que le résultat soit là et puis je transpose et adapte ma solution à ce qui devrait être mon projet définitif

  7. #7
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Ok! beaucoup de courage et au moindre problème
    F1, google, ici
    Le plus difficile reste à faire: Lancer la recherche dans la table "clients" et afficher les diverses informations dans les différents textBox.
    Exécutes une requête du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "select bidule, truc from machin "
    et comme tu sais utiliser les dataset, eh bien tu affiches les rows dans tes textbox; mais je te conseille plutôt d'utiliser des DataGridView et autres pour afficher tes résultats

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse.

    Entre-temps j'ai parcouru divers tutoriaux. J'y ai découvert la méthode dont tu parles mais j'avais également lu un truc qui me semblait intéressant basé sur l'utilisation de la méthode find. C'est pas bon ça ?

    Pour le datagridview tu as raison, c'est fait en un tour de main (enfin presque) mais je dois dire que je n'aime pas trop leur présentation.

    Merci en tous cas. Je travaillerez là-dessus demain.

    Peux-tu juste me dire si je dois laissé tomber mes recherches sur la méthode find?

  9. #9
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Là, je crois que tu parles du fameux LINQ. Dommage, je m'y suis pas encore mis.

  10. #10
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour

    La methode find :

    Non non, tu peux l'utiliser sur un dataview

    Le principe

    Tu charge une datatable avec une rquete sql
    Tu mets une DataView sur cette datatable
    Avec cette dataview tu peux utiliser des filtres, des sort, des find etc..


    C'est TRES utile et facile mais ca implique evidement que les données nécessaires soint chargées en memoire

    Sinon , c'est un bete select from where ....

  11. #11
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Les Find peuvent s'appliquer à différents niveaux, il existe les Find sur les DataChoses (DataTable, DataSet...) mais aussi sur les collections d'objets.

    Ils permettent d'effectuer des recherches dans une collection d'objet, sans avoir recourt à LINQ Fally

    Le principal intérêt est selon moi de pouvoir utililser des délégués (des pointeurs de fonctions et donc de pouvoir réutiliser la méthiode de filtrage ailleurs, sans copier coller le code => moins de redondance = moins de maintenance = plus de fiabilité = plus de qualité.

    Attention, les requêtes en base restent à privilégier dans certains cas (histoire de performances).

    Dans le cas où tu dispose d'une collection et que tu veux récupérer quelques éléments qui satisfont des critères, Find marche bien.

    Exemple :

    Code java : 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
     
    class Client { publi string nom; public string prenom;}
    class Main{
      public void machin()
     {
        List<Client> liste = // initialisation+ remplissage
        Client toto = liste.Find(Untel("toto"));
     }
     
      public Action<Client> Untel(string nom)
      {
        return ( delegate (Client c)
          {
              return c.nom.Equals(nom);
           } ) ;
      }
     
    }
    C'est vraiment un petit exemple pas très peaufiné...
    Si tu as un soucis de compréhension, hésite pas

  12. #12
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Décidement le find est tres controversé

    NON il n'y a pas de find sur Datatable, Dataset ou le Datachose de hed62

    Mais je preconise fortement le find et filter sur un dataview appliqué a la datatable

    Par 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
     
     
    // Genre de declaration :
    // Datatable dt=new Datatable();
    // DataView dv = new DataView(dt);
     
    // exemple de filtre
        private DataView findAddrTours(int addrID)
        {
          DataView view = new DataView(BaseInfo);
     
          view.RowFilter = "addrID=" + addrID.ToString();
          view.Sort = "addrID,dag,ChauffeurID";
          return view;
     
        }
     
     
    // autre exemple de find
     
     
          DataView view = new DataView(BaseInfo);
          view.Sort = "ID ASC";
     
          int idx = view.Find(MonId);
          DataRowView rv = view[idx];

  13. #13
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Désolé, j'ai répondu un peu vite. Les find que je fais sur un dataset sont plutot du genre dataset.Tables[0].Rows.Find.... Donc pas tout à fait sur le dataset

  14. #14
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    Par contre tu m'éclaire sur qq chose c'est que l'on peut faire un find sur des rows

    Ca marche si on n'est pas trié sur l'item ?

    L'avantage du dataview c'est que tu peux trier

  15. #15
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Ca marche si on n'est pas trié sur l'item ?
    Pas compris, désolé...

    L'avantage du dataview c'est que tu peux trier
    Oui, un find sur des rows, ca a ses limites. Je m'en sers essentiellement pour vérifier la présence d'objets/les compter, en récupérer un en particulier... Rien de très évolué.

  16. #16
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Pas compris, désolé...
    Avec le find dans un dataview, tu peux specifier la colonne de recherche pour autant que tu ait défini le tri dessus


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          DataView view = new DataView(BaseInfo);
          int Id=123456;
          view.Sort = "ID ASC";
          int idx=view.find(Id);

  17. #17
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Ah d'accord, je ne savais pas du tout... Je suppose que cela fonctionne même sans tri, oui.

  18. #18
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    Non ca ne fonctionne pas sans tri

    Pour ca tu peux mettre un filtre !

  19. #19
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous,

    Je vois que le débat est ouvert....

    J'ai pris connaissance de vos post mais n'ai eu que très peu de temps à leur consacrer (Administration réseau oblige).

    Cependant, hier soir, j'ai continué mes recherches (c'est le seul moyen d'y arriver) et je suis tombé sur quelques infos intéressantes pour mon niveau. Elles répondent partiellement à mes questions si ce n'est qu'elles s'appliquent à un datagridView alors que j'utilise des textBox. Je pense qu'en poussant un peu, je devrais y arriver. Je vous tiendrai informés de toute façon. Qui sait peut-être vais-je pouvoir partager ma solution avec d'autres personnes. Ce serait une première pour moi.

    Voici le lien le plus pertinent
    http://msdn.microsoft.com/fr-fr/library/hbsty6z7.aspx

    Visiblement, ici, la solution utilisée est basée sur la méthode "try" "catch". (C'est bien une méthode ??!!)

    Le débat sur le select et le fill semblant toucher à sa fin, ce thème sera-t-il l'objet d'un nouveau. Efficacité de la méthode, les + les - .....

    Merci et bon WE à tous

  20. #20
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Citation Envoyé par divos Voir le message
    Visiblement, ici, la solution utilisée est basée sur la méthode "try" "catch". (C'est bien une méthode ??!!)
    le "try catch" permet, entre autres, de gerer soi-même les erreus qui pourraient subvenir lors de l'exécution du code, qui ne seraient pas prévisible au moment du coding; voici un petit exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try
    {
        Console.WriteLine("Entrer la valeur de i"); // et l'utilisateur entre 0
        int i = Console.ReadLine();
        int j = 5;
        int ret = j / i;
    }
    catch (DivideByZeroException) 
    {
        Console.WriteLine("Impossible de diviser par zero");
    }
    recherche sur ce forum, tu verras plein d'autres cas traitant des cas d'utilisation du "try catch"

Discussions similaires

  1. [MySQL] Recherche aléatoire dans une base de données SQL
    Par tibo894 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/06/2009, 10h58
  2. problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/10/2005, 18h00
  3. Recherche dans une base de donnée
    Par genova dans le forum SQLite
    Réponses: 8
    Dernier message: 28/09/2005, 23h16
  4. problème de recherche dans une base de données
    Par bouzid_mehdi dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 06h47
  5. recherche dans une base de donnée+boucle
    Par eric205 dans le forum Bases de données
    Réponses: 8
    Dernier message: 15/03/2005, 21h14

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