Datagridview + base de données

ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 - 20 mars 2008 à 21:50
ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 - 21 mars 2008 à 18:44
Bonjour,

les données de mon datagridview provenant d'un fichier Excel, je dois insérer manuellement chaque "row" de mon datagridview dans ma base de données.

Mon souci, c'est que je n'arrive pas à sélectionner la valeur d'une cellule dans une colonne.

Voici ce que j'ai prévu de faire pour l'insertion des données de la datagridview dans ma bdd, j'ai pensé à un code comme ca:

            String requete = "INSERT INTO users VALUES (";
            for (int i = 0; dataGridView1.Columns.Count; i++)
            {
                if (dataGridView1.Columns[i].Name == "Nom")                    requete +"Nom " + dataGridView1.Columns[i].rows[0] + " ,"; //voilà en rouge ce que je ne sais pas quel propriété utiliser pour récupérer la valeur de la row 0
                else if (dataGridView1.Columns[i].Name == "Prenom")
                    requete += "Prenom= " + dataGridView1.Columns[i].rows[0] + " ,";
                else if (dataGridView1.Columns[i].Name == "Email")
                    requete += "Email= " + dataGridView1.Columns[i].rows[0] + " ,";
            }
            requete += ")";

Bien entendu, il y aura un substring pour enlever le dernier virgule de la requête, j'exécuterai la requête d'insertion dès que la boucle aura parcouru tous les colonnes, et enfin il y aura une autre boucle for imbriqué à l'extérieur pour parcourir les différentes Row.

Merci d'avance.

2 réponses

cs_Kassidy Messages postés 97 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 21 mars 2008 3
21 mars 2008 à 12:00
Salut,

la syntaxe de ta requete ne m'a pas l'air bonne, et pour recupérer les valeurs du tableau je te conseille DGV.Row[i].Cell[j].Value
0
ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 1
21 mars 2008 à 18:44
Merci pour ta réponse.

En effet, il y a eu une erreur dans ma requête SQL, pour ceux que ça intéresse, la requête d'insertion devait être écrit comme ça:
INSERT INTO matable(champs1) VALUES (valeurs1)
et non
INSERT INTO matable VALUES (champs1 = valeurs1)

Sinon, pour mon code, j'aimerai savoir s'il y a un moyen de simplifier afin de dire que tel champs correspond à tel champs de la table de la base de données afin d'éviter les tout pleins de if else
Par exemple,

dans ma datagridview il y a une colonne "Nom de l'animal" et pour créer ma requête je suis obligé d'utiliser des if pour dire que ce nom de colonne devra être inséré dans tel champs de la table de ma bdd.

            String requeteStart = "INSERT INTO users(";
            String requeteParam = "";
            String requeteValue = "";
            String requeteFinal = "";
            for (int i = 0; i<dataGridView1.Columns.Count; i++)
            {
                if (dataGridView1.Columns[i].Name == "Nom")
                {
                    requeteParam += "UserLastName,";
                    requeteValue += "'" + dataGridView1.Rows[0].Cells[i].Value + "', ";

                }
                else if (dataGridView1.Columns[i].Name == "prénom")
                {
                    requeteParam += "UserFirstName,";
                    requeteValue += "'" + dataGridView1.Rows[0].Cells[i].Value + "', ";
                }
                else if....
            
            }
            requeteFinal = requeteStart + requeteParam.Substring(0, requeteParam.Length-1) + ") VALUES (" + requeteValue.Substring(0, requeteValue.Length-2) + ")";

Merci
0
Rejoignez-nous