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

Windows Forms Discussion :

Insert les donnees dans la base en C#


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 46
    Points : 36
    Points
    36
    Par défaut Insert les donnees dans la base en C#
    Bonjour

    En fait j'ai une winform et j'aimerai inserer des donnees dans ma base
    j'utilise le mode deconnecté je vous montre mon code la precision la partie SELECT marche bien c'est l'INSERT qui ne marche pas

    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
    24
    25
    26
    27
    28
    29
     
     
     private void button_ajouter_Click(object sender, EventArgs e)
            {
                //on va utiliser un Insert
                myDa.InsertCommand = new SqlCommand();
                myDa.InsertCommand.Connection = connection;
                myDa.InsertCommand.CommandText = "INSERT INTO T_AVION(AV_MODELE, AV_CONSTRUCTEUR) VALUES('" + txt_model + "','" + txt_construc + "')";
     
     
                myDa.Update(myDs, "T_AVION");
                dataGridView1.DataSource =myDs.Tables["T_AVION"];
     
     
     
     
    private void button_affichage_Click(object sender, EventArgs e)
            {
                //on va utiliser la fonction select
                myDa.SelectCommand = new SqlCommand();
                myDa.SelectCommand.Connection = connection;
                myDa.SelectCommand.CommandText = "SELECT * FROM T_AVION";
     
                myDa.Fill(myDs, "T_AVION");
                dataGridView1.DataSource = myDs.Tables["T_AVION"];
     
            }
     
    Si quelqu'un à une idee merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    je viens de remarquer que cette ligne provoque un bug

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myDa.Update(myDs, "T_AVION");
    donc voila le nouveau code

    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
    24
    25
    26
     
    private void button_ajouter_Click(object sender, EventArgs e)
            {
                //on va utiliser un Insert
                myDa.InsertCommand = new SqlCommand();
                myDa.InsertCommand.Connection = connection;
                myDa.InsertCommand.CommandText = "INSERT INTO T_AVION(AV_MODELE, AV_CONSTRUCTEUR) VALUES('" + txt_model + "','" + txt_construc + "')";
     
                MessageBox.Show("information saisie");
     
                dataGridView1.DataSource =myDs.Tables["T_AVION"];
     
     
     
     
    private void button_affichage_Click(object sender, EventArgs e)
            {
                //on va utiliser la fonction select
                myDa.SelectCommand = new SqlCommand();
                myDa.SelectCommand.Connection = connection;
                myDa.SelectCommand.CommandText = "SELECT * FROM T_AVION";
     
                myDa.Fill(myDs, "T_AVION");
                dataGridView1.DataSource = myDs.Tables["T_AVION"];
     
            }

  3. #3
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Il te manque le SqlCommandBuilder, avec lui tu ne t'embêtes pas à créer le INSERT il le fera tout seul.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    using( SqlConnection connection = new SqlConnection( stringConnection.ConnectionString ) )
    {
                    SqlDataAdapter adapter = new SqlDataAdapter( "SELECT * FROM T_AVION", connection );
                    SqlCommandBuilder cmd = new SqlCommandBuilder( adapter );
                    DataTable tableAvion = new DataTable();                
                    adapter.Fill(  tableAvion );              
    }
     
    //Remplissage du DataGridView
    dataGridView1.DataSource = tableAvion;
     
    //Mise à jour de la base par rapport au info entrées dans le DataGridView
    adapter.Update( tableAvion );

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Merci pour ta reponse mais lorsque je remplis mes textboxs et lorsque je clique sur le bouton il m'affiche juste le contenu de ma datagrivew sans nouvelle donnee


    en fait je m'explique un peu c'est une winform avec 2 textbox qui represent le Modele et le Constructeur de l'avion et un bouton ajouter et afficher pour ajouter les donnees dans la datagrivew j'utilise le mode deconnecté pour faire le mes requets dans la base

    voila l'integralité du code

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    namespace Test11
    {
        public partial class Form1 : Form
        {
            public SqlConnection connection = new SqlConnection();
            public SqlDataAdapter myDa = new SqlDataAdapter();
            public DataSet myDs = new DataSet();
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                //connection à la base
                connection.ConnectionString = "Data Source=pc-de-sangare\\sqlexpress;Initial Catalog=SaberatourSQL;Integrated Security=True";
     
            }
     
            private void button_ajouter_Click(object sender, EventArgs e)
            {
     
     
                //On reprend tout ce passage
     
                //on va utiliser un Insert
     
               myDa.InsertCommand = new SqlCommand();
     
               myDa.InsertCommand.Connection = connection;
               myDa.InsertCommand.CommandText = "INSERT INTO T_AVION(AV_MODELE, AV_CONSTRUCTEUR) VALUES('" + txt_model + "','" + txt_construc + "')";
     
               dataGridView1.DataSource= myDs.Tables["T_AVION"];
     
            }
     
    private void button_affichage_Click(object sender, EventArgs e)
            {
                //on va utiliser la fonction select
                myDa.SelectCommand = new SqlCommand();
                myDa.SelectCommand.Connection = connection;
                myDa.SelectCommand.CommandText = "SELECT * FROM T_AVION";
     
                myDa.Fill(myDs, "T_AVION");
                dataGridView1.DataSource = myDs.Tables["T_AVION"];
     
            }
    surtout n'hesité pas si vous avez besoin de precision

  5. #5
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    As tu initialisé la propriété DataPropertyName dans les colonnes créées pour le DataGridView? Elle doit avoir le même nom que le nom de ta colonne dans la base, donc AV_MODELE et AV_CONSTRUCTEUR.

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    je l'ai pas fait et je vois pas vraiment comment le faire c'est ca le gros probleme

  7. #7
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Regarde si dans la méthode InitializeComponent tu as des new DataGridViewTextBoxColumn ou new DataGridViewXXColumn avec XX egal à ComboBox ou TextBox ou autre.


    Sinon voila comment je créer mes colonnes si ça peut aider.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    addColumn( new DataGridViewTextBoxColumn(), "Titre de la colonne"," Nom dans la base" );
     
    private void addColumn( DataGridViewColumn viewColumn, string name, string dbName )
            {
                viewColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                viewColumn.DataPropertyName = dbName;
                viewColumn.Name = name;
                viewColumn.HeaderText = name;
                dataGridView.Columns.Add( viewColumn );
            }

  8. #8
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Merci à dormilon pour ton aide j'ai finalement pu ecrire dans la base directement sans passé par la datagridview

    voila le code que j'ai utiliser pour le INSERT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SqlConnection cnt = new SqlConnection();
                SqlCommand cmd = new SqlCommand();
                cnt.ConnectionString = connection.ConnectionString;
                cmd.Connection = cnt;
                cmd.CommandType = CommandType.Text;
     
                cmd.CommandText = "INSERT INTO T_AVION(AV_ID,AV_MODELE,AV_CONSTRUCTEUR) values('" + txt_type.Text.ToString() + "','" + txt_model.Text.ToString() + "','" + txt_construc.Text.ToString() + "')";
                if (cnt.State == ConnectionState.Closed)
                    cnt.Open();
                cmd.ExecuteNonQuery();
                if (cnt.State == ConnectionState.Open)
                    cnt.Close();

  9. #9
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (cnt.State == ConnectionState.Closed)
    ça tu pourrais t'en passer.
    vu que tu ne l'ouvres pas, elle est forcément fermée la connexion.

    Ensuite, tu peux utiliser le mot-clé using pour gérer la destruction propre de la connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
          blablabla
        }
    le code fermera la connexion tout seul comme un grand


    Par contre, ta technique d'INSERT est très très très mauvaise. si je tape
    ');DELETE FROM T_AVION;--
    dans la case numéro 2
    1- le programme ne va pas planter
    2- ca va supprimer toutes les données de ta base
    *le code est pas exactement cela mais avec plusieurs essais, c'est très facile de deviner le format de la requete d'origine et de l'attaquer

    bref, tu es une porte ouverte à l'injection SQL. Utilise des requêtes paramétrées même si c'est pour un petit projet, il faut prendre des bonnes habitudes dès le départ
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  10. #10
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Merci toute ses infos

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

Discussions similaires

  1. insertion des donnees dans la base a partie de MS studio 2005
    Par j_esti dans le forum Visual Studio
    Réponses: 6
    Dernier message: 01/09/2008, 11h21
  2. comment editer les donnee d'une base de donnees dans une application xbap?
    Par sanaaafkir dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 19/05/2008, 16h26
  3. Réponses: 2
    Dernier message: 19/10/2007, 20h29
  4. Difficulte d'insertion de valeur dans une base de donnees
    Par blondelle dans le forum C++Builder
    Réponses: 10
    Dernier message: 13/04/2007, 21h19
  5. Réponses: 11
    Dernier message: 01/06/2005, 15h18

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