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

Messages postés
95
Date d'inscription
lundi 11 février 2008
Dernière intervention
8 juin 2009
- - Dernière réponse : Fo0Zie
Messages postés
95
Date d'inscription
lundi 11 février 2008
Dernière intervention
8 juin 2009
- 29 janv. 2009 à 12:04
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.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
95
Date d'inscription
lundi 11 février 2008
Dernière intervention
8 juin 2009
1
3
Merci
A la place j'ai utilisé une requête paramétré et plus de problème.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 114 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Fo0Zie
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
66
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 114 internautes nous ont dit merci ce mois-ci

Commenter la réponse de SharpMao
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
23
3
Merci
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é.?

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 114 internautes nous ont dit merci ce mois-ci

Commenter la réponse de nhervagault
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
66
0
Merci
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)
Commenter la réponse de SharpMao
Messages postés
95
Date d'inscription
lundi 11 février 2008
Dernière intervention
8 juin 2009
1
0
Merci
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#.
Commenter la réponse de Fo0Zie

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.