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 :

Envoi de données d'un formulaire C# à une base de données sql server


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 19
    Points
    19
    Par défaut Envoi de données d'un formulaire C# à une base de données sql server
    Bonjour à tous,
    je suis débutante en C# , je suis entrain de développer un petit formulaire et je n'arrive pas à envoyer les données vers la BD sql

    donc voilà j'ai une table:

    incident (Id_Incident,#Login, Type,Priorité,Objet,Description,Date_Ouverture, Date_CLôture, Etat)
    user(login, passwd, profil)

    Date_Ouverture: doit prendre la date systeme
    Date_CLôture; doit prendre null pour le moment
    Etat; doit prendre 'Ouvert'

    code de ma procédure stockée pour insérer les champs dans la table incident:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Create Procedure InsertIncident  ( @Id_Incident int, 
    				@Login varchar(50), 
    				@Type varchar(50),
    				@Priorite varchar(50),
    				@Objet varchar(50),
    				@Description varchar(50),
    				@Date_Ouverture date,
    				@Date_cloture date,
                                    @Etat varchar(50)) 
    as 
    Insert into Incident (Id_Incident, Login, Type, Priorite, Objet,Description,Date_Ouverture, Date_cloture, Etat) 
    values(@@identity,@Login,@Type,@Priorite,@Objet,@Description,CURRENT_TIMESTAMP,NULL,'Ouvert')

    le code de ma fonction C#

    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
    public static DataSet AjoutIncident(int Id_Incident, String Login,String Type, String Priorite, String Objet, String Description,DataSetDateTime Date_Ouverture, DataSetDateTime Date_Cloture, String Etat)
            {
                SqlParameter[] AttributTab = new SqlParameter[] 
                 {
     
                    new SqlParameter("@Login", Login),
                    new SqlParameter("@Type", Type),
                    new SqlParameter("@Priorite", Priorite),
                    new SqlParameter("@Objet", Objet),
                    new SqlParameter("@Description", Description)
                   };
     
                DataSet ds = new DataSet();
                SqlConnection connexion;
                try
                {
                    connexion = new SqlConnection("Server=.\\SQLExpress; AttachDbFilename=C:\\Program Files\\Microsoft SQL Server\\MSSQL10.SQLEXPRESS\\MSSQL\\DATA\\test1607.mdf;Database=test1607; Trusted_Connection=Yes;");
                    connexion.Open();
     
                    SqlCommand cmd = new SqlCommand("InsertIncident", connexion);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddRange(AttributTab);
                    cmd.CommandTimeout = 3600;
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(ds);
                }
                catch (Exception x)
                {
                    string ex = x.Message;
                }
                return ds;
            }
    appel de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void button2_Click(object sender, EventArgs e)
            {
                AjoutIncident(textBox3.Text, comboBox1.Text, comboBox2.Text, textBox1.Text, textBox2.Text);
            }
    Quelqu'un pourrait m'aider!
    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Bonjour,

    - D'abord, inutile de déclarer des paramètres dans ta ps si tu ne les utilisera pas.
    - Dans ton code C#, tu n'assignes pas de valeur à tes paramètres. Si tu veux, tu peux combiner la déclaration et l'assignation des paramètres ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TaCommande.Parameters.AddWithValue("@Login", Login);
    EDIT: je n'avais pas vu la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.Parameters.AddRange(AttributTab);
    dans ton code. Donc pas d'oublie de l'assignation des valeurs pour tes param.

    Mais que veux-tu exactement? Ton code génère-t-il une erreur?

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Au faite il ne génère aucune erreur, mais après l'exécution, quand je vérifie le contenu de ma table "incident" , je la trouve vide! -> l'insertion n'a pas eu lieu

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    Bonjour,

    Tu n'as pas le droit d'utiliser linq, qui te simplifierait la vie

    Sinon il ne te manque pas quelques paramètres pour l'appel d'InsertIncident .

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    ça .. ça marche à merveille, mais moi je veux passer par les procédures stockées

    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
    private void ajouterReclamation(object sender, EventArgs e)
            {
     
                using (SqlConnection connexion = new SqlConnection("Server=.\\SQLExpress; AttachDbFilename=C:\\Program Files\\Microsoft SQL Server\\MSSQL10.SQLEXPRESS\\MSSQL\\DATA\\test1607.mdf;Database=test1607; Trusted_Connection=Yes;"))
                {
                    SqlCommand cmd = new SqlCommand("INSERT INTO Incident (Login,Type,Priorite, Objet,Description,Date_Ouverture,Date_Cloture,Etat) VALUES (@Login,@Type,@Priorite,@Objet,@Description,@Date_Ouverture,@Date_Cloture,@Etat)");
     
     
                    cmd.CommandType = CommandType.Text;
                    cmd.Connection = connexion;
     
     
                    cmd.Parameters.AddWithValue("@Login", textBox3.Text);
                    cmd.Parameters.AddWithValue("@Type", comboBox1.Text);
                    cmd.Parameters.AddWithValue("@Priorite", comboBox2.Text);
                    cmd.Parameters.AddWithValue("@Objet", textBox1.Text);
                    cmd.Parameters.AddWithValue("@Description", textBox2.Text);
                    cmd.Parameters.AddWithValue("@Date_Ouverture",DateTime.Now);
                    cmd.Parameters.AddWithValue("@Date_Cloture",DateTime.Now);
                    cmd.Parameters.AddWithValue("@Etat","Ouvert");
     
                    connexion.Open();
                    cmd.ExecuteNonQuery();
     
                    connexion.Close();
                } 
            }
     
            private void Envoyer(object sender, EventArgs e)
            {
                ajouterReclamation(sender, e);
            }

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Probleme résolu j'ai just supprimé la ligne d'Id_Incident

    ma nouvelle procédure stockée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Create Procedure InsertIncident ( @Login varchar(50), 
    						@Type varchar(50),
    						@Priorite varchar(50),
    						@Objet varchar(50),
    						@Description varchar(50),
    @Date_Ouverture Date,
    @Date_Cloture Date,
    @Etat varchar(50)) 
    as 
     
    Insert into Incident (Login, Type, Priorite, Objet, Description, Date_Ouverture, Date_cloture, Etat) 
     
    values(@Login, @Type, @Priorite, @Objet, @Description, @Date_Ouverture, @Date_Cloture, @Etat)
    mon code C#:

    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
            public static DataSet AjoutIncident(String Login,String Type, String Priorite, String Objet, String Description,DateTime Date_Ouverture,DateTime Date_Cloture, String Etat)
            {
                SqlParameter[] AttributTab = new SqlParameter[] 
    		    {
     
                    new SqlParameter("@Login", Login),
                    new SqlParameter("@Type", Type),
                    new SqlParameter("@Priorite", Priorite),
                    new SqlParameter("@Objet", Objet),
                    new SqlParameter("@Description", Description),
                    new SqlParameter("@Date_Ouverture",Date_Ouverture),
                    new SqlParameter("@Date_Cloture",Date_Cloture),
                    new SqlParameter("@Etat",Etat)
                };
     
                DataSet ds = new DataSet();
                SqlConnection connexion;
                try
                {
                    connexion = new SqlConnection("Server=.\\SQLExpress; AttachDbFilename=C:\\Program Files\\Microsoft SQL Server\\MSSQL10.SQLEXPRESS\\MSSQL\\DATA\\test1607.mdf;Database=test1607; Trusted_Connection=Yes;");
                    connexion.Open();
     
                    SqlCommand cmd = new SqlCommand("InsertIncident", connexion);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddRange(AttributTab);
                    cmd.CommandTimeout = 3600;
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(ds);
                }
                catch (Exception x)
                {
                    string ex = x.Message;
                }
                return ds;
            }
     
            private void Envoyer(object sender, EventArgs e)
            {
                AjoutIncident(textBox3.Text, comboBox1.Text, comboBox2.Text,textBox1.Text,textBox2.Text,DateTime.Now,DateTime.Now,"Ouvert");
            }

    et il me reste que le champs Date_cloture, je veux qu'il prend la valeur null!

  7. #7
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Je suppose que ton Id_Incident est autoincrement. Donc, plus besoin de le préciser dans ta ps
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Create Procedure InsertIncident  ( 
    				@Login varchar(50), 
    				@Type varchar(50),
    				@Priorite varchar(50),
    				@Objet varchar(50),
    				@Description varchar(50),
    				@Date_Ouverture date,
    				@Date_cloture date,
                    @Etat varchar(50)) 
    as 
    Insert into Incident (Login, Type, Priorite, Objet,Description,Date_Ouverture, Date_cloture, Etat) 
    values(@Login,@Type,@Priorite,@Objet,@Description,@Date_Ouverture,@Date_cloture,@Etat)
    Ensuite, tu pourras faire:
    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
    59
    60
    61
    62
    63
    64
    65
     
    public abstract class GestionIncident
    {
       private static string connectionString = GetConnectionString();
     
    	private static string GetConnectionString()
    	{
           // si ton fichier mdf se trouve dans le répertoire data, tu peux simplement l'attacher ainsi
    		return "Server=.\SQLExpress;AttachDbFilename=|DataDirectory|test1607.mdf;Database=test1607;Trusted_Connection=Yes;";
    	}
     
    	public static bool AjoutIncident(String Login,String Type, String Priorite, String Objet, String Description,DateTime Date_Ouverture, DateTime Date_Cloture, String Etat)
    	{
    		using (SqlConnection connection = new SqlConnection())
    		{
    			try
                {
    				connection.ConnectionString = connectionString;
    				connection.Open();
     
    				 using (SqlCommand cmd = connection.CreateCommand())
    				 {
    					cmd.CommandType = CommandType.StoredProcedure;
    					cmd.CommandText = "InsertIncident";
    					cmd.Parameters.AddWithValue("@Login", Login);
    					cmd.Parameters.AddWithValue("@Type", Type);
    					cmd.Parameters.AddWithValue("@Priorite", Priorite);
    					cmd.Parameters.AddWithValue("@Objet", Objet);
    					cmd.Parameters.AddWithValue("@Description", Description);
    					cmd.Parameters.AddWithValue("@Date_Ouverture", DateTime.Now); 
    					cmd.Parameters.AddWithValue("@Date_cloture", DateTime.Now); 
    					cmd.Parameters.AddWithValue("@Etat", 'Ouvert'); 
    					// Si tu as besoin de la valeur de retour du ps
    					/* cmd.Parameters.Add(new SqlParameter("@RETURN_VALUE",SqlDbType.Int32, 4, ParameterDirection.ReturnValue,false, 4, 4, string.Empty,
    																						   DataRowVersion.Current,null)); */
    					cmd.ExecuteNonQuery();
    					return true;
     
    				  }
     
    			}
    			catch (Exception ex)
    			{
    				// .. traitement de l'exception
    				return false;
    			}
    		}
     
    	}
    }
     
    public partial class FrmAjoutIncident : Form
    {
    	// .....
    	private void Envoyer(object sender, EventArgs e)
    	{
    		bool result = GestionIncident.AjoutIncident(textBox3.Text, comboBox1.Text,comboBox2.Text,textBox1.Text,textBox2.Text,DateTime.Now,DateTime.Now,"Ouvert");
     
    		if(result)
    			MessageBox.Show("Ajout effectué avec succès!");
    		else	
    			MessageBox.Show("Echec de l'ajout");
     
    	}
     }
    EDIT: je viens de voir que tu as trouvé la solution. N'oublie pas de mettre résolu.

Discussions similaires

  1. [MySQL] Inscription des données d'un formulaire dans une base de données
    Par xjulio59 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 25/08/2010, 14h45
  2. [MySQL] Créer un formulaire et une base de données
    Par hitch86 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/09/2007, 12h07
  3. Réponses: 4
    Dernier message: 23/04/2007, 12h01
  4. ajout dans un formulaire et une base de donnée
    Par mademoizel dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/06/2006, 14h42
  5. [MySQL] Génération automatique de formulaire sur une base de données
    Par Tr@nkill dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 04/04/2006, 14h28

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