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 :

Tableau à 2 dimensions et requête SQL INSERT


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Par défaut Tableau à 2 dimensions et requête SQL INSERT
    Bonjour à tous,

    Je réalise une Class en C# dans laquelle je récupère entres autres un tableau à 2 dimensions _tabUrl. Ce tableau contient des url, en indice i le nom de l'url et en indice j l'url elle-même.

    Je voudrais savoir si il possible de dissocier l'indice i et j lors de la double boucle censé parcourir le tableau.

    En fait je voudrais faire quelque chose dans ce style :
    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
      
    ...          
    //Insertion des différentes url lié à l'article de type téléchargement
    string StrReq4;
    SqlCommand Req4;
    for (int i = 0; i < this._tabUrl.GetLength(0); i++)
    {
        for (int j = 0; j < this._tabUrl.GetLength(1); j++)
        {
           StrReq4 = "INSERT INTO [url]([article_id_], [titre_url], [lien_url]) VALUES("+_id_article+",'"+this._tabUrl[i]+"','"+this._tabUrl[j]+"')";
           Req4 = new SqlCommand(StrReq4, Conn, Trans);
           Req4.ExecuteNonQuery();
        }
    }
    ...
    Mais le compilateur n'a pas l'air d'apprécier cette syntaxe

    Je suis à peu prêt sûre que l'on doit pouvoir faire ça.

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    StrReq4 = "INSERT INTO [url]([article_id_], [titre_url], [lien_url]) VALUES("+_id_article+",'"+this._tabUrl[i]+"','"+this._tabUrl[j]+"')";
    A mon avis cela doit venir de cette ligne mais que te dis exctement le compilateur?

  3. #3
    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
    Pour accéder aux éléments d'un tableau à 2 dimensions il faut utiliser 2 indices, par exemple _tabUrl[i,j]. Je ne sais pas comment sont organisées les données dans ton tableau, mais ce que tu as écrit n'a pas vraiment de sens...

    Le plus simple, si le nom de l'URL est dans la colonne 0 et l'URL dans la colonne 1, ce serait ça (pas besoin de boucles imbriquées) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (int i = 0; i < this._tabUrl.GetLength(0); i++)
    {
           StrReq4 = "INSERT INTO [url]([article_id_], [titre_url], [lien_url]) VALUES("+_id_article+",'"+this._tabUrl[i,0]+"','"+this._tabUrl[i,1]+"')";
           Req4 = new SqlCommand(StrReq4, Conn, Trans);
           Req4.ExecuteNonQuery();
    }
    Et évite de construire tes requêtes par concaténation, utilise plutôt des requêtes paramétrées, comme expliqué dans ce tuto :
    http://johannblais.developpez.com/tu...s-donnees/#LIV

  4. #4
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Salut.

    Déjà, Tomlev +1 pour les deux dimensions...

    Ensuite, pour faire ce que tu as à faire, je te conseillerais plutôt un Dictionary<string,string> plutôt qu'un tableau à deux dimensions : le nom de ton url en clé et l'url comme valeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dictionary<string,string> _tabUrl = new Dictionary<string,string>();
    // Ajouter un couple nom de l'url / valeur de l'url
    this._tabUrl.Add(urlName, urlValue);
    // ...
    // Pour parcourir ton tableau d'url, tu itères sur les clés
    // Le nom de ton url c'est key, sa valeur c'est tabUrl[key]
    foreach (string key in this._tabUrl.Keys) {
    	//...
    	StrReq4 = "INSERT INTO [url]([article_id_], [titre_url], [lien_url]) VALUES("+_id_article+",'"+ key +"','"+ tabUrl[key] +"')";
    }
    Personnellement, je trouve ça plus simple que de s'embêter avec des tableaux à deux dimensions

    Bon courage

  5. #5
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Par défaut
    Merci tomlev mais j'étais au courant
    Pour accéder aux éléments d'un tableau à 2 dimensions il faut utiliser 2 indices, par exemple _tabUrl[i,j]. Je ne sais pas comment sont organisées les données dans ton tableau, mais ce que tu as écrit n'a pas vraiment de sens...
    Et évite de construire tes requêtes par concaténation, utilise plutôt des requêtes paramétrées, comme expliqué dans ce tuto :
    http://johannblais.developpez.com/tu...s-donnees/#LIV
    Ma question étais bien de savoir si il était possible de dissocier les indices.
    Je voudrais savoir si il possible de dissocier l'indice i et j lors de la double boucle censé parcourir le tableau.
    Mais je crois que la solution proposée par eusebe19 semble la plus adapté à mon cas.

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

Discussions similaires

  1. Problème requête sql : INSERT INTO
    Par bobosh dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/08/2008, 10h43
  2. Requête SQL Insert Into
    Par jjg65 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 07/11/2007, 08h35
  3. Execution d'une requête SQL INSERT
    Par damien27000 dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/07/2007, 21h35
  4. Problème d'une requête SQL INSERT
    Par bejaad dans le forum VBA Access
    Réponses: 1
    Dernier message: 02/07/2007, 12h53
  5. Réponses: 4
    Dernier message: 10/04/2007, 11h10

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