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 :

Utiliser les données importées avec une requête


Sujet :

C#

  1. #1
    Shinyshine
    Invité(e)
    Par défaut Utiliser les données importées avec une requête
    Bonjour,

    Je suis en train de faire un programme et vu que je suis débutant en c# j'aurais besoin de votre aide!

    Je me suis connecté à une base de donnée interbase, j'ai effectué une requête avec des left join, inner join, where.


    Je souhaiterai tout simplement savoir comment faire pour utiliser les données que j'ai importé ^^

  2. #2
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Pour t'aider nous avons besoins de savoir comment tu as importé tes données dans ton code.
    Normalement il te suffit de créer une fonction avec un type de retour précis.
    Mais montre nous ta fonction, cela sera plus simple.

  3. #3
    Shinyshine
    Invité(e)
    Par défaut
    on passe l'étape de la connexion, 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
    OleDbCommand Olecmd = connec.CreateCommand();
    Olecmd.Transaction = connec.BeginTransaction();
     
    Olecmd.CommandText += "toute la requête"
     
     
    OleDbDataReader OleReader = Olecmd.ExecuteReader();
     
     
    while (OleReader.Read())
                   {
     Console.WriteLine(string.Format("{0} etc etc)
                   }
    il m'affiche bien les résultats demandé, mais je ne sais comment les exploiter! ^^ peut être qu'à la place de la console je dois mettre mes résultats dans un tableau à l'aide d'une commande (dataset?)
    Dernière modification par Deepin ; 10/05/2010 à 16h07. Motif: Balises [CODE]...[/CODE]

  4. #4
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    OK,
    Si à la place de ton tu essayes de récupérer les données dans une variable.
    Quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result += string.format("{0}{1}"...)
    De cette façon tu obtiens tout ton résultat dans ta variable.
    Sinon tu peux aussi créer une list et faire un "list.add"

    Mais je pense que le plus propre c'est de te créer une fonction qui prend en paramètres les différents critères de ta requête, qui l'execute et qui ensuite renvoit les données au travers d'une liste.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private List Mafonction(mes parametres)
    {
       Le code de ma fonction;
       return result;
    }
    Juste pour information, Tu as déjà programmer dans un autre langage? Le ou lesquels?

  5. #5
    Shinyshine
    Invité(e)
    Par défaut
    Merci pour l'aide ^^

    Pour ta question j'ai déjà travaillé en python.

    Si sa peut te guider dans ta réponse, ma requête renvoie des données selon la personnes souhaité

    En faîte dans la requête, je sélectionne une personne, et celle ci aura plusieurs lignes d'info:

    ligne 1: nom, prenom, heure,date, commentaire
    ligne 2: nom, prenom, heure,date, commentaire
    ligne 3: nom, prenom, heure,date, commentaire

    et comme tu peux le voir certain de ces résultats n'auront pas la même heure ou la même date. Peut être aurais-je besoin de créer un itérateur car chaque paramètre (heure date) différent fera l'objet d'un nouvel élément?

  6. #6
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Alors pour t'aider il faut que l'on sache si tu développes une application Windows Form, application console, asp.net... ?
    Le C# s'applique à beaucoup de domaines il faudrait que tu précises ton but.

    Ensuite si j'ai un conseil à te donner, use et abuse des assistants que fourni visual studio, cela te permettra de créer rapidement tes applications en c# et de comprendre un peut mieux la logique c#.
    Et surtout pense à aller regarder du coté des tutoriels que propose le site, ils sont très détaillés et t'aideront à te plonger dans le monde du c#

  7. #7
    Shinyshine
    Invité(e)
    Par défaut
    En faîte j'ai démarré à partir d'un projet vide, j'ai créé une classe pour la connexion à la base de donnée puis une autre pour le traitement de ces données.

  8. #8
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Je t'invite à utiliser le "Linq to SQL", c'est une technique très puissante, facile à utiliser et qui ressemble vraiment beaucoup au SQL (dans la structure des requêtes).
    Ensuite pour respecter les standards, utilise deux bibliothèques de classes pour faire du développement en couche :
    1. NomdemaDB.DAL (Data Access Layer)
    2. NomdemaDB.BLL (Business Logic Layer)

    Regarde par ici c'est bien expliqué.
    Ensuite regarde ici pour comprendre ce qu'est la puissance du Linq

    Avec tout cela, tu va pouvoir t'amuser et créer un tas d'application sympas.

  9. #9
    Shinyshine
    Invité(e)
    Par défaut
    Y a t-il possibilité d'importer les données dans un tableau?

    Comme ceci je pourrais sélectionner une ligne ainsi que la colonne?

  10. #10
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Citation Envoyé par ludojojo Voir le message
    Je t'invite à utiliser le "Linq to SQL", c'est une technique très puissante, facile à utiliser et qui ressemble vraiment beaucoup au SQL (dans la structure des requêtes).
    Ensuite pour respecter les standards, utilise deux bibliothèques de classes pour faire du développement en couche :
    1. NomdemaDB.DAL (Data Access Layer)
    2. NomdemaDB.BLL (Business Logic Layer)

    Regarde par ici c'est bien expliqué.
    Ensuite regarde ici pour comprendre ce qu'est la puissance du Linq

    Avec tout cela, tu va pouvoir t'amuser et créer un tas d'application sympas.
    Linq-to-SQL sur Interbase j'y crois moyen

    Shinyshine, C# est un language objet, pas un tableur. Généralement, lorsque l'on récupère des lignes de la base de données on alimente des objets (appellés objets metiers) avec ces données (c'est le mapping objet/relationnel ou ORM). Ainsi les lignes sont chacun des objets et les colonnes sont les différentes propriétés des objets.

  11. #11
    Shinyshine
    Invité(e)
    Par défaut
    Citation Envoyé par PitMaverick78 Voir le message
    Shinyshine, C# est un language objet, pas un tableur.
    sans dec


    Sans rire, j'ai importé mes données dans "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<String> resultat = new List<string>();
    , et ensuite enregistré dedans à l'aide de cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat.Add(string.Format("{0}{1}{2}{3} ect ect))
    Le soucis c'est que quand je fais "Console.WriteLine(resultat[1] il m'affiche toutes la ligne, et je ne trouve aucun moyen de selectionner une colonne spécifique...


  12. #12
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Citation Envoyé par Shinyshine Voir le message
    sans dec


    Sans rire, j'ai importé mes données dans "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<String> resultat = new List<string>();
    , et ensuite enregistré dedans à l'aide de cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat.Add(string.Format("{0}{1}{2}{3} ect ect))
    Le soucis c'est que quand je fais "Console.WriteLine(resultat[1] il m'affiche toutes la ligne, et je ne trouve aucun moyen de selectionner une colonne spécifique...

    En même temps, c'est pas le rôle de String.Format que de parser une ligne...

  13. #13
    Shinyshine
    Invité(e)
    Par défaut
    mouai...

  14. #14
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 96
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par Shinyshine Voir le message
    Y a t-il possibilité d'importer les données dans un tableau?

    Comme ceci je pourrais sélectionner une ligne ainsi que la colonne?
    Peut être que c'est ça que tu cherche:

    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
    DataTable dt = new DataTable("test");
    // on cree les colonnes
    dt.Columns.Add("nom",System.Type.GetType("System.String"));
    dt.Columns.Add("prenom",System.Type.GetType("System.String"));
    dt.Columns.Add("date",System.Type.GetType("System.date"));
    dt.Columns.Add("commentaire",System.Type.GetType("System.String"));
     
     
    // on ajoute la ligne à chaque parcours du reader
     
    while (OleReader.Read())
                   {
    // on insert une nvelle ligne
    DataRow dr = dt.NewRow();
    dr["nom"] = OleReader["nom"];
    dr["prenom"] = OleReader["prenom"] 
    dr["date"] = OleReader["date"] 
    dr["commentaire"] = OleReader["commentaire"]
     dt.Rows.Add(dr);
                   }
     
    // on affiche la table (utilise une datagrid ou autre ..)
    dataGrid1.DataSource = dt;
    Cdt

  15. #15
    Shinyshine
    Invité(e)
    Par défaut
    Je sais pas encore si cela va faire le résultat que j'attends mais rapidement je voudrais :

    ligne 1: nom, prenom, heure,date, commentaire
    ligne 2: nom, prenom, heure,date, commentaire
    ligne 3: nom, prenom, heure,date, commentaire


    sélectionner la ligne 2 et la colonne date par exemple!

  16. #16
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Je me répète mais comme j'ai précisé tout à l'heure:
    -Créer dans le projet une classe contenant les données des lignes
    -Pour chaque ligne dans la base tu instancies un objet de ta classe
    -Tu ajoutes chaque objet dans une liste
    -Tu peux apres faire myList[2].Date pour obtenir la date de la deuxième ligne

  17. #17
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 96
    Points : 97
    Points
    97
    Par défaut
    Je ne sais pas ce que tu veux faire après avoir sélectionner une cellule, mais avec une datagrid tu peux récupérer l'index du colonne et ligne sélectionné.

  18. #18
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 96
    Points : 97
    Points
    97
    Par défaut
    Comment savoir sur quelle cellule l'utilisateur clique:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridCell cell = this.DataGrid1.CurrentCell;

    Comment récupérer le contenu de celle-ci?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DataGridCell cell = this.DataGrid1.CurrentCell;
    Object value = this.DataGrid1[cell.RowNumber, cell.ColumnNumber];

    Bon courage

  19. #19
    Shinyshine
    Invité(e)
    Par défaut
    Citation Envoyé par simodox Voir le message
    Peut être que c'est ça que tu cherche:

    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
    DataTable dt = new DataTable("test");
    // on cree les colonnes
    dt.Columns.Add("nom",System.Type.GetType("System.String"));
    dt.Columns.Add("prenom",System.Type.GetType("System.String"));
    dt.Columns.Add("date",System.Type.GetType("System.date"));
    dt.Columns.Add("commentaire",System.Type.GetType("System.String"));
     
     
    // on ajoute la ligne à chaque parcours du reader
     
    while (OleReader.Read())
                   {
    // on insert une nvelle ligne
    DataRow dr = dt.NewRow();
    dr["nom"] = OleReader["nom"];
    dr["prenom"] = OleReader["prenom"] 
    dr["date"] = OleReader["date"] 
    dr["commentaire"] = OleReader["commentaire"]
     dt.Rows.Add(dr);
                   }
     
    // on affiche la table (utilise une datagrid ou autre ..)
    dataGrid1.DataSource = dt;
    Cdt
    Re

    Je pense que ta méthode est la mieux pour ce que je désire, malheureusement je n'arrive toujours pas à sélectionner un champ spécifique...(genre la colonne nom de la ligne 2)

    de plus dt n'est pas accessible à l'extérieure de la boucle while. enfin j'ai l'impression.

    ps: pour lire mes données, j'utilise la console (c'est juste pour moi, afin de voir si le résultat que je veux s'affiche) car les données que ma requête importe sont utilisé en interne dans l'appli!


    edit: je pense avoir trouvé ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine(resultat.Rows[i]["nom_jour"]);
    Dernière modification par Deepin ; 17/05/2010 à 16h31.

  20. #20
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Si tu veux faire un dataTable avec tes données, je ne vois pas pourquoi tu utilises un Reader...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Command = aConnection.CreateCommand(); //ou aConnection est un DBConnection et Command un DBCommand
    Command.CommandText = aRequest;
    DataAdapter.SelectCommand = Command;
    DataAdapter.Fill(aDataSet); //ou aDataSet est un DataSet
    Ensuite tu lie la table[0] de ton dataset au DataSource d'un DataGridView, etc....

Discussions similaires

  1. Réponses: 34
    Dernier message: 21/09/2009, 11h59
  2. [MySQL] Les données issues d'une requête SQL sont erronées
    Par edenreal dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 21/08/2009, 00h41
  3. [AJAX] Modifier les header (PHP) avec une requête XMLHttpRequest?
    Par Prosis dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 09/09/2008, 00h34
  4. Exporter les données issues d'une requête vers un doc Word
    Par sebpreps dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/05/2008, 17h00
  5. Problème pour trouver les données commune dans une requête
    Par Winterrage dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/02/2008, 10h14

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