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 :

Utilisation des classes en c#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Septembre 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 36
    Par défaut Utilisation des classes en c#
    salut les éminents développeurs,j'ai un souci avec un code.
    Je me permets de publier celui-ci sur le site afin de bénéficier de vos largesses.
    Voici mon code:
    Classe de connection:
    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
     
    public static class ConnectionClass
        {
            private static SqlConnection conn;
            private static SqlCommand command;
     
            static ConnectionClass()
            {
                string ConnectionString = ConfigurationManager.ConnectionStrings["GestEmployeConnectionString"].ToString();
                conn = new SqlConnection(ConnectionString);
                command = new SqlCommand("", conn);
            }       
     
            public static void AjoutDepartemnt(Departement departement)
            {
                string query = string.Format("INSERT INTO DEPT VALUES ('{0}',@DNAME,'{2}'",
                departement.Code, departement.Nom, departement.Loc);
                command.CommandText = query;
                command.Parameters.Add(new SqlParameter("DNAME", departement.Nom));
     
                try
                {
                    conn.Open();
                    command.ExecuteNonQuery();
                }
                finally
                {
                    conn.Close();
                    command.Parameters.Clear();
                }
     
            }
     
        }
    Classe departement:
    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
    public class Departement
        {
     
            public string Code { get; set; }
            public string Nom { get; set; }
            public string Loc { get; set; }
     
     
            public Departement(string code, string nom, string loc)
            {
                Code = code;
                Nom = nom;
                Loc = loc;
     
            }
     
        }
    Classe pour réinitialiser les champs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void ClearTextFields()
            {
                TxtCode.Text = "";            
                TxtNom.Text = "";
                TxtLocalité.Text = "";
     
     
            }
    Bouton enregister:
    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
     
    protected void Btn_Enregistrer_Click(object sender, EventArgs e)
            {
                try
                {
                    string code = TxtCode.Text;
                    string nom = TxtNom.Text;
                    string loc = TxtLocalité.Text;
     
                    Departement departement = new Departement(code, nom, loc);
                    ConnectionClass.AjoutDepartemnt(departement);
     
                    MessageBox.Show("les données ont été enregistreées avec succès!");
                    ClearTextFields();
                }
                catch (Exception)
                {
     
                    MessageBox.Show("Impossible d'enregistrer les données!");
                }
            }
    Je n'arrive pas enregister les données la base de donnés.Prière de me donner un coup de main.
    voici le message qui s'affiche:Impossible d'enregistrer les données!

  2. #2
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Par défaut
    Bonjour

    1/ Au minimum, j'aurais remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     catch (Exception)
                 {
                       MessageBox.Show("Impossible d'enregistrer les données!");   
              }
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     catch (Exception ex)
                 {
                       MessageBox.Show(ex.Message);  
               }
    J'aurais quand même mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    catch (Exception ex)
                 {
                        EventLog.WriteEntry(sSource, ex.Message, EventLogEntryType.Error);
                 }
    Et en fin de compte, pour le débuggage, j'aurais même enlevé le bloc de code du try..catch, histoire d'avoir un vrai message d'erreur

    2/ Es tu sûr d'être en ASP? L'utilisation de MessageBox en ASP me semble ... bizarre

    3/
    string.Format("INSERT INTO DEPT VALUES ('{0}',@DNAME,'{2}'", ...
    ça, ça va planter. mets {1}. Tu as fait un micmac entre les paramètres de ta requête et ton String.Format()


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  3. #3
    Membre actif
    Inscrit en
    Septembre 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 36
    Par défaut
    en mettant 1 à la place de @DNAME
    ça ne change rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string.Format("INSERT INTO DEPT VALUES ('{0}',@DNAME,'{2}'", ...

  4. #4
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Par défaut
    Soit tu fais un String.Format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string sql=string.Format("INSERT INTO DEPT VALUES ('{0}', '{1}', '{2}')", code, nom, loc);
    soit une requête paramétrée (c'est mieux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sql=
    "INSERT INTO DEPT VALUES (@code, @nom, @loc)"
    
    ...
    command.Parameters.AddWithValue("code", code);
    command.Parameters.AddWithValue("nom", nom);
    command.Parameters.AddWithValue("loc", loc);
    Mais les deux ensembles,


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Par défaut
    Beaucoup d'informations t'ont été remontées déjà pour ton problème. Je vais donc simplement te donner un conseil, une préférence. Après chacun ses goûts et sa façon de faire.

    Personnellement je ne suis pas fan des requêtes écrites dans le code, je préfère utiliser des procédures stockées ce qui permet d'avoir un code et des requêtes bien séparées. De plus ça te permet éventuellement de modifier tes requêtes sans avoir à modifier/recompiler ton code.

  6. #6
    Membre très actif
    Homme Profil pro
    Developpeur
    Inscrit en
    Décembre 2011
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 111
    Par défaut INSERTION DANS UNE BD
    D'abord tu utilise quel est SGBD?
    Parce que ta requête me semble bizzare
    "INSERT INTO DEPT VALUES (@code, @nom, @loc)"

  7. #7
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    Citation Envoyé par Hlama Voir le message
    D'abord tu utilise quel est SGBD?
    Parce que ta requête me semble bizzare
    "INSERT INTO DEPT VALUES (@code, @nom, @loc)"
    La requête reste correcte (dans le cas ou la table contient que les 3 champs code, nom et loc)

    Citation Envoyé par Air P-E Voir le message
    Personnellement je ne suis pas fan des requêtes écrites dans le code, je préfère utiliser des procédures stockées ce qui permet d'avoir un code et des requêtes bien séparées. De plus ça te permet éventuellement de modifier tes requêtes sans avoir à modifier/recompiler ton code.
    Chacun ses goûts tu as raison, moi je ne suis pas du même avis surtout dans le cas ou on a une application qui utilises plusieurs SGBD, et je préfère ne pas mettre du tout le code fonctionnel dans les procédures stockées ça me permet de rester indépendant du support du stockage (SGBD, XML, Service Web...)

Discussions similaires

  1. [c#] Utiliser des classes ou des tableaux ?
    Par dysko dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/02/2007, 11h22
  2. Réponses: 2
    Dernier message: 31/10/2006, 16h29
  3. utiliser des classes C++ en delphi
    Par Guigui_ dans le forum Delphi
    Réponses: 6
    Dernier message: 07/07/2006, 10h29
  4. utiliser des classes dont on n'a pas le source
    Par kocin dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/08/2004, 16h05

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