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

Langage SQL Discussion :

Comment mettre un Array dans ma requête d'insertion SQL ?


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 28
    Points : 19
    Points
    19
    Par défaut Comment mettre un Array dans ma requête d'insertion SQL ?
    Bonjour tout le monde !

    Je dispose d'un Array nommé "ar_nutri" en string.

    Je souhaite l'intégrer dans ma requette d'insertion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    command.CommandText = "INSERT INTO nouv_alim ( ici je veux mon Array ) VALUES ('" + nomTextBox.Text + "', " + labelKcal.Text + ", " + ProtidesBox.Text + ", " + GlucidesBox.Text + ", " + LipidesBox.Text + ")";
    J'ai cherché toute la journée, en vain.

    Merci pour votre aide.
    Patrick

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 120
    Points : 28 524
    Points
    28 524
    Par défaut
    Bonjour,

    A l'emplacement où tu souhaites placer ton tableau, la syntaxe du langage SQL attend la liste des noms de colonnes, séparées par des virgules, dans lesquelles tu veux placer les valeurs définies après le mot clé VALUES.
    C'est donc à toi, en fonction du langage applicatif que tu utilises, de convertir ce tableau de chaines de caractères sous la forme d'une unique chaîne respectant la syntaxe du langage SQL. En supposant bien sûr que ce tableau contient bien les noms de colonnes.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Merci al1_24,

    Oui, mon array contient bien le nom des colonnes.
    Donc, il faut que je cherche à convertir cet array en chaine de caractères pour SQL.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Voilà, j'ai réussi.

    Je convertis mon array " ar_nutri" en chaine de caractères avec un virgule entre chaque élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var str1 = String.Join(", ", ar_nutri);
    Ma requête devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    command.CommandText = "INSERT INTO nouv_alim ("+str1+" ) VALUES ('" + nomTextBox.Text + "', " + labelKcal.Text + ", " + ProtidesBox.Text + ", " + GlucidesBox.Text + ", " + LipidesBox.Text + ")";
    Cela fonctionne parfaitement.
    Il me reste à faire l'équivalent pour les valeurs.

    Pour l'instant il n'y a que 5 colonnes et 5 valeurs, mais à terme, il y en aura une trentaine...
    C'est pour quoi j'utilise des Array, faute de quoi, ma requête serait vraiment très longue...

    Encore merci pour votre aide !

  5. #5
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 871
    Points : 1 673
    Points
    1 673
    Par défaut
    Citation Envoyé par Patrick-06 Voir le message
    Pour l'instant il n'y a que 5 colonnes et 5 valeurs, mais à terme, il y en aura une trentaine...
    30 colonnes, dans la même table, dont les informations proviennent d'un IHM ...

    Je pense que tu aurais intérêt à nous présenter ton modèle de données, avant que ton dev ne devienne trop important.
    Le savoir est une nourriture qui exige des efforts.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Merci Michel,

    J'utilise SQLite.
    Pour l'instant, j'ai une table de composition des aliments dont les données proviennent de la base CIQUAL. (Ils fournissent les données Excel ou CVS)
    Une table vide identique pour ajouter de nouveaux aliments, je joint ces deux tables.
    Une table avec le nom des nutriments.
    J'utilise des vues pour manipuler les données.

    Pour l'instant, j'ai fait :
    - Une interface pour chercher un aliment et pour visualiser tous ses nutriments, Calories, Proteines, Vitamines, minéraux...etc.
    Il y a aussi des combobox pour trier les aliments selon le + de ou le - de chacun des nutriments, par exemple le plus de vitamine C.
    - Une interface pour ajouter de nouveaux aliments.

    Il me reste à faire, en particulier l'interface pour saisir les aliments consommés dans la journée et les rapports de ce qui a été consommé par jour, semaine, etc.

    Donc beaucoup de boulot sur la planche !

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 184
    Points : 362
    Points
    362
    Par défaut
    Citation Envoyé par Patrick-06 Voir le message
    Merci Michel,
    Pour l'instant, j'ai une table de composition des aliments dont les données proviennent de la base CIQUAL. (Ils fournissent les données Excel ou CVS)
    Une table vide identique pour ajouter de nouveaux aliments, je joint ces deux tables.
    Tu es sûr et certain que c'est pertinent d'avoir deux tables "identique" ?
    Une qui contient des aliments et l'autre qui contient la composition d'aliment ?
    Je pense que y a un petit problème chef
    Un problème sans solution est un problème mal posé. (Albert Einstein)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Ce sont deux tables identiques qui comprennent les aliments et leur composition, la deuxième étant vide pour y ajouter de nouveaux aliments personnels.
    Je tiens à ce que la table principale "CIQUAL" reste toujours identique pour ne pas risquer de la corrompre.
    Ensuite pour visualiser, je joint les deux tables.

  9. #9
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 871
    Points : 1 673
    Points
    1 673
    Par défaut
    Je sais que c'est pas forcément agréable d'avoir une palanquée de personnes qui regardent par dessus ton épaule pour critiquer/analyser/commenter ce que tu dis.
    Accepte la critique, étudie les réponses et, fais comme tu veux

    Citation Envoyé par Patrick-06 Voir le message
    Ce sont deux tables identiques qui comprennent les aliments et leur composition, la deuxième étant vide pour y ajouter de nouveaux aliments personnels.
    L'un des premier travail de conception est d'utiliser le 'bon' vocabulaire.
    Et c'est plus précisément le mot "aliment" qui me semble être un faux ami surtout s'il doit être associé à "composition" alors même qu'il est question des "apports journaliers".

    Au delà du vocabulaire, il faudra se pencher sur les attributs eux mêmes ; s'il est question d'apport journalier alors il est question de date mais aussi de quantité.
    On ne mange pas autant et aussi souvent du caviar que de pain ...

    Bref, je vous engage à nous exposer la partie "base de donnée" de votre projet
    Le savoir est une nourriture qui exige des efforts.

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 406
    Points : 40 000
    Points
    40 000
    Billets dans le blog
    9
    Par défaut
    Le vocabulaire est important en effet, mais aussi les règles de gestion : sans règles de gestion précises et validées par le donneur d'ordre (qui peut être soi-même dans le cas d'une BD perso, mais le plus souvent c'est la MOA), le modèle de données ne peut pas être construit correctement. Les règles de gestion sont à la construction de la base de données ce que le plan de l'architecte est à la construction de la maison : un prérequis incontournable

  11. #11
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Merci Michel.Priori , escartefigue,

    Pour le vocabulaire, lorsque je parle d'aliment, c'est par exemple, une banane, et sa composition, c'est les nutriments qu'elle contient pour 100 g. (Calories, protéines, glucides, lipides, toutes les vitamines et minéraux)

    Le tape dans le premier champ de recherche de mon formulaire "banane" et dans mon datagridwiew apparaissent tous les aliments contenant le mot banane. J'affine avec le deuxième champ de recherche, "flambée" par exemple.
    Je clique sur mon datagridview sur l'aliment que je souhaite consulter, alors, s'affichent tous ses nutriments, dans des textBox avec leurs labels.

    J'ai aussi un formulaire pour enregistrer de nouveaux aliments et leurs nutiments, qui n'existent pas dans la table CIQUAL, par exemple, cookies au chocolat Carrefour.
    Je les enregistre dans une table séparée de même structure que la table CIQUAL et, pour la consultation, je joint ces deux tables.

    Tout cela fonctionne très bien.

    Pour la structure, je ne suis pas parti avec un plan bien précis.
    J'invente au fur at à mesure.

    Là, je réfléchis à comment l'utilisateur pourra saisir sa consomation journalière d'aliments et à afficher les rapports de ce qu'il a consommé par jour, semaine, etc. , de calories, protides... etc.

  12. #12
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 871
    Points : 1 673
    Points
    1 673
    Par défaut
    Citation Envoyé par Patrick-06 Voir le message
    Pour le vocabulaire, lorsque je parle d'aliment, c'est par exemple, une banane, et sa composition, c'est les nutriments qu'elle contient pour 100 g. (Calories, protéines, glucides, lipides, toutes les vitamines et minéraux)
    Aliment désigne 'tout ce qu'on peut digérer' ; du coup c'est très vaste comme définition ; ça permet beaucoup de truc pervers comme :
    l'eau est-elle un aliment ? (minéraux)
    Toutes les eaux ont la même composition ?

    Pour 100g de fromage frais, ça fait combien de matière sèche (la composition est donnée pour 100g de matière sèche, c'était demandé par les fabriquant de fromages à la sortie de la guerre pour augmenter le % de matière grasse affiché)


    Citation Envoyé par Patrick-06 Voir le message
    Le tape dans le premier champ de recherche de mon formulaire "banane" et dans mon datagridwiew apparaissent tous les aliments contenant le mot banane. J'affine avec le deuxième champ de recherche, "flambée" par exemple.
    houla !
    Une recette ne peut se réduire à l'assemblage des composants.
    La cuisson, et autres procédés, relèvent de la chimie ! Un légume vapeur n'a pas les mêmes caractéristiques qu'un légume cru, il a plus d'eau !

    Et il y a une énorme différence entre les produits industriels et les produits maison : le respect des mesures à chaque préparation.
    Pour un même plat, il n'y a qu'à voir les recettes sur le web pour se rendre compte des variations de % des composants.

    Bref, tu as tout intérêt de fixer les limites de ce qui est demandé et ce qui va être délivré.
    Le savoir est une nourriture qui exige des efforts.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 03/10/2007, 12h25
  2. Comment mettre aucune valeur dans Array of integer?
    Par Ardely dans le forum Langage
    Réponses: 10
    Dernier message: 02/08/2007, 19h15
  3. Réponses: 13
    Dernier message: 26/08/2005, 17h34
  4. Comment mettre une icone dans un bouton ?
    Par Hokagge dans le forum MFC
    Réponses: 7
    Dernier message: 29/06/2005, 21h28
  5. COMMENT METTRE 2 CHAMPS DANS LE MEME DBLOOKUPCOMBOBOX
    Par ledevelopeur dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/07/2004, 16h15

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