Exception non comprise C# SQL Server [Résolu]

Signaler
Messages postés
95
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
8 juin 2009
-
Messages postés
95
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
8 juin 2009
-
Bonjour,

J'ai un formulaire d'insertion d'utilisateurs et lorsque je clique sur le bouton valider j'ai une exception généré. Je ne la comprend pas. Je pense que celle-ci vient de ma requête INSERT car quand je l'execute sur SQL Server 2005 j'ai la même erreur.

+        $exception    {"Le nom "Association" n'est pas autorisé dans ce contexte. Les expressions valides sont des constantes, des expressions constantes et (dans certains contextes) des variables. Les noms de colonnes ne sont pas autorisés."}    System.Exception {System.Data.SqlClient.SqlException}

A savoir que le nom "Association" est le titre de l'utilisateur qui saisi dans une textbox.

Voici mon code :

protected void imgBtnValider_Click(object sender, ImageClickEventArgs e)
        {
            string titre, nom, prenom, email, login, mdp, statut;
            SqlCommand cmd;

            // Récupération des champs saisis dans des variables
            titre = this.DropDownListTitre.SelectedValue.ToString();
            nom = this.txtBoxNom.Text;
            prenom = this.txtBoxPrenom.Text;
            email = this.txtBoxEmail.Text;
            login = this.txtBoxMdp.Text;
            mdp = this.txtBoxMdp.Text;
            statut = this.DropDowListStatut.SelectedValue.ToString();
            
            // Commande SQL
            String sql = "INSERT INTO users(use_titre, use_nom, use_prenom, use_email, use_login, use_pass, use_statut, use_droits)VALUES(" + titre.ToString() + "," + nom.ToString() + "," + prenom.ToString() + "," + email.ToString() + "," + login.ToString() + "," + mdp.ToString() + "," + statut.ToString() + "," + "Utilisateur" + ")";

            //Ouverture de la connection et exécution
            cnn.Open();
            cmd= new SqlCommand(sql, cnn);

            // Exécution de la requête
            cmd.ExecuteNonQuery();
            cnn.Close(); 
        }

Je me demande si cette erreur n'est pas du au faite que ma clef primaire est un champ identy(1,1), mais je ne le spécifie pas dans ma clause INSERT INTO.

Bref, je suis perdu, merci d'avance de votre aide.

5 réponses

Messages postés
95
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
8 juin 2009
1
A la place j'ai utilisé une requête paramétré et plus de problème.
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Hello,

Ce n'est pas à cause de Identity, mais parce qu ta requête est mal formattée.
Si tu met un break point dans ton code pour regarder la requête, et que tu essaie de l'éxécuter dans ta base, tu verras qu'elle ne marche pas.

Je te conseille vivement d'essaier avec des requêtes paramétrées.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut,

Il manque les ' dans ta chaine SQL

NB il faut les doubler dans le texte

exemple l'avion --> l''avion

Mais le plus propre est de passé par les requetes parametrées
qui gere ce probleme et les problemes de typage
et en plus accelere les requetes.

Bref recommandé.?
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Le temps d'écrire, et tu as trouvé la solution.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
95
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
8 juin 2009
1
Merci SharpMao et nhervagault !

En effet, je ne sais pas pourquoi je n'ai pas pensé avant à la requête paramétré. Je suis trop buté sur mon projet ASP.net (qui est tout nouveau pour moi) et j'en oubli le C#.