OVH Cloud OVH Cloud

INSERT avec une clé primaire qui s'incrémente (C#:ASP.NET)

3 réponses
Avatar
Steeve
Bonjour,

J'essai de faire une commande INSERT dans une table SQL SERVER où la clé
primaire s'incrémente de 1 à chaque ajout d'une ligne. (La propriété
"Identity Seed" est 1 et "Identity Increment" est aussi). Le champ Matricule
est ma clé primaire. Quand j'exécute cette ligne SQL, le matricule se met à
la valeur zéro plus que de continuer à s'incrémenter.

Où est mon problème?
Merci.
Steeve

SQL = "INSERT INTO CADETS (" +
"Matricule, Nom, Prenom, Sexe" +
") VALUES ('" +
"', '" +
Regex.Replace(TextBox1.Text, "'", "''") +
"', '" +
Regex.Replace(TextBox2.Text, "'", "''") +
"', '" +
DropDownList1.SelectedItem.Text.ToString() +
"')";

3 réponses

Avatar
Céline
si ta clé primaire est un compteur automatique, il ne faut
pas l'intégrer dans ta commande insert.
INSERT INTO CADETS
(Nom, Prenom, Sexe)
VALUES(Regex.Replace(TextBox1.Text, "'", "''") +
"', '" +
Regex.Replace(TextBox2.Text, "'", "''") +
"', '" +
DropDownList1.SelectedItem.Text.ToString() +
"')




-----Message d'origine-----
Bonjour,

J'essai de faire une commande INSERT dans une table SQL


SERVER où la clé
primaire s'incrémente de 1 à chaque ajout d'une ligne.


(La propriété
"Identity Seed" est 1 et "Identity Increment" est aussi).


Le champ Matricule
est ma clé primaire. Quand j'exécute cette ligne SQL, le


matricule se met à
la valeur zéro plus que de continuer à s'incrémenter.

Où est mon problème?
Merci.
Steeve

SQL = "INSERT INTO CADETS (" +
"Matricule, Nom, Prenom, Sexe" +
") VALUES ('" +
"', '" +
Regex.Replace(TextBox1.Text, "'", "''") +
"', '" +
Regex.Replace(TextBox2.Text, "'", "''") +
"', '" +
DropDownList1.SelectedItem.Text.ToString() +
"')";


.



Avatar
AXL
Salut,

Il faut que tu enlève matricule dans ton insert!!!
ta requête sera :
SQL = "INSERT INTO CADETS ( Nom, Prenom, Sexe ) VALUES ('"+
Regex.Replace(TextBox1.Text, "'", "''") +
"', '" +Regex.Replace(TextBox2.Text, "'", "''") +"', '"
+DropDownList1.SelectedItem.Text.ToString() +"')";

c'est un autoincrement tu ne peux pas interagir dessus, c'est sql qui le
gère !!!

@+

"Steeve" a écrit dans le message de
news:
Bonjour,

J'essai de faire une commande INSERT dans une table SQL SERVER où la clé
primaire s'incrémente de 1 à chaque ajout d'une ligne. (La propriété
"Identity Seed" est 1 et "Identity Increment" est aussi). Le champ


Matricule
est ma clé primaire. Quand j'exécute cette ligne SQL, le matricule se met


à
la valeur zéro plus que de continuer à s'incrémenter.

Où est mon problème?
Merci.
Steeve

SQL = "INSERT INTO CADETS (" +
"Matricule, Nom, Prenom, Sexe" +
") VALUES ('" +
"', '" +
Regex.Replace(TextBox1.Text, "'", "''") +
"', '" +
Regex.Replace(TextBox2.Text, "'", "''") +
"', '" +
DropDownList1.SelectedItem.Text.ToString() +
"')";




Avatar
Vince C.
"Steeve" a écrit dans le message de
news:
[...]
SQL = "INSERT INTO CADETS (" +
"Matricule, Nom, Prenom, Sexe" +
") VALUES ('" +
"', '" +
Regex.Replace(TextBox1.Text, "'", "''") +
"', '" +
Regex.Replace(TextBox2.Text, "'", "''") +
"', '" +
DropDownList1.SelectedItem.Text.ToString() +
"')";



J'ajouterai que manipuler des chaînes de caractères directement avant
l'exécution dans SQL server peut être très dangereux car pose des problèmes de
sécurité importants (il existe des chapitres entiers de documentation à ce sujet
sur le site de Microsoft; je n'ai plus l'URL en tête mais il existe certainement
des personnes parmi ce groupe de discussion qui les connaissent). Avec ADO, les
requêtes paramétrées peuvent être utilisées avec un objet Command. Sous .NET,
c'est l'objet SqlCommand qui se charge du travail.

Voici un article qui récapitule les points les plus importants (en anglais):

http://www.codeproject.com/cs/database/sqldodont.asp

Vincent