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 :

Conseil SQL + DataSet + Liaison


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2009
    Messages : 82
    Points : 63
    Points
    63
    Par défaut Conseil SQL + DataSet + Liaison
    Bonjour à tous, je bataille depuis 2 jours à tenter de faire qq chose de correct.. mais en vain.. quand ca marche les temps d'exécution sont beaucoup trop long.

    voila le context

    j'accède a un SQL server pour récupérer 2 tables différentes

    on va dire une table : Catalogue et une table Appro

    j'utilise ce code pour les deux tables pour obtenir mes 2 DataSet

    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
    string querySelect = "SELECT .........";
     
    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = "data source..................";
     
    SqlCommand query = new SqlCommand();
    query.Connection = conn;
    query.CommandText = querySelect;
    query.CommandType = CommandType.Text;
     
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.SelectCommand = query;
    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;                
     
    DataSet ds = new DataSet();
    adapter.FillSchema(ds, SchemaType.Mapped, "MyTest");
    adapter.Fill(ds, "MyTest");
     
    ds.WriteXml("c:\\MyTest_Catalogue.xml", XmlWriteMode.WriteSchema);
    voici un extrait du xml pour chaque table.

    Catalogue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      <MyTest>
        <Ref>1/BC/HIBISCUS/A/36</Ref>
        <Colisage>800.000000</Colisage>
        <T2>0.000000</T2>
        <T3>0.000000</T3>
      </MyTest>
    Appro

    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
      <MyTest>
        <Ref>1/BB/HIPOINT/B</Ref>
        <date_arrivage>2011-02-16T00:00:00+01:00</date_arrivage>
        <qte_arrivages>5040.000000</qte_arrivages>
      </MyTest>
      <MyTest>
        <Ref>1/BC/HIBISCUS/A/36</Ref>
        <date_arrivage>2011-02-16T00:00:00+01:00</date_arrivage>
        <qte_arrivages>5040.000000</qte_arrivages>
      </MyTest>
      <MyTest>
        <Ref>1/BC/HIBISCUS/A/36</Ref>
        <date_arrivage>2011-04-16T00:00:00+01:00</date_arrivage>
        <qte_arrivages>4320.000000</qte_arrivages>
      </MyTest>
    voila, ce qui est en commun sur les deux table c'est le champ ref

    jusque la tout va bien... la ou ca se complique c'est que j'ai besoin d'avoir un dataset qui prends en compte les 2 datasets..

    cad que dans mon exemple sur le dataset catalogue, j'ai besoin d'avoir les infos dispo dans le dataset appro, sachant que dans le deuxiememe dataset, l'info peut etre disponible x fois, dans mon exemple 2 fois

    je ne pense pas qu'il soit possible d'ajouter des "noeuds" dans un data set, il me semble qu'il doit falloir utiliser un séparateur pour avoir mes données ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <MyTest>
        <Ref>1/BC/HIBISCUS/A/36</Ref>
        <Colisage>800.000000</Colisage>
        <T2>0.000000</T2>
        <T3>0.000000</T3>
        <date_arrivage>2011-02-16T00:00:00+01:00|2011-04-16T00:00:00+01:00</date_arrivage>
        <qte_arrivages>5040.000000|4320.000000</qte_arrivages>
     </MyTest>
    j'ai essaye par exemple de parcourir chaque ligne de la table de mon dataset catalogue et d'utiliser :

    .Select(string.Format("{0} LIKE '%{1}%'", columnName, value));

    ca marcherais, mais c'est vraiment très très lent..

    donc est ce que vous avez qq conseils pour moi, est ce qu'il n'y pas une méthode qui me permet de faire qq chose de propre en utilisant le champ commun ref ?

    merci d'avance de votre aide précieuse :-)

  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 : 42
    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
    Points : 39 754
    Points
    39 754
    Par défaut
    j'ai pas tout compris, mais j'ai l'impression qu'il te manque un élément... un DataSet n'est pas limité à une table, il peut en contenir plusieurs !

    Donc il faut que tu charges tes 2 tables dans le même DS, et que tu définisses une relation entre les 2 selon la clé Ref

Discussions similaires

  1. Demande de conseil SQL Server 2008 Express
    Par Yokidor dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/12/2012, 11h55
  2. Génération de DataSet : liaison de param non valide
    Par tatayet_le_felee dans le forum Accès aux données
    Réponses: 1
    Dernier message: 18/08/2009, 15h10
  3. Réponses: 7
    Dernier message: 04/03/2008, 11h38
  4. [SQL] Dataset en SQL conditionné
    Par Reskibil dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/02/2008, 16h28
  5. Liaison MySQL et SQL Server
    Par Zebulonn dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 04/05/2005, 16h14

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