Bonjour,
J'ai effectivement déjà eu un problème similaire, mais il était tout bête celui là, contrairement à celui que j'ai en cours...
Car j'ai un formulaire, et quand je valide à l'aide du bouton, un programme récupère les données et les insère dans la base de données...
Mais voilà une des données pose problème...
Car j'aimerais choisir entre lui affecter une valeur et lui affecter la valeur null mais apparemment ni l'un ni l'autre ne fonctionne...
L'erreur quand je veux lui affecter une valeur, ou une valeur null :
Voici le code :Une valeur explicite de la colonne identité de la table 'PROPERTY' ne peut être spécifiée que si la liste des colonnes est utilisée et si IDENTITY_INSERT est défini sur ON.
(En violet le code qui fait une erreur à chaque fois.)
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 protected void bt_insertion_Click(object sender, EventArgs e) { int code = int.Parse(tb_id.Text); string nom = tb_namep.Text; int idparent = int.Parse(ddl_choixparent.SelectedValue); int metaSy = 0; object valeur1; SqlConnection connexion = new SqlConnection(System.Configuration.ConfigurationManager. ConnectionStrings["connectString1"].ConnectionString); connexion.Open(); // requête Insert/Update des informations dans la table du mois en cours REPLACE autorisé avce MySql ;) string query = "INSERT INTO PROPERTY values (@code, @nom, @idparent, @metaSy)"; lbl_requete.Text = query; using (SqlConnection Connection = new SqlConnection(System.Configuration.ConfigurationManager. ConnectionStrings["connectString1"].ConnectionString)) { SqlCommand cmdInsert = new SqlCommand(query, Connection); // commande SQL insertion dans table cmdInsert.CommandText = query; // "paramètrage" des paramètres cmdInsert.Parameters.Add("@code", SqlDbType.Int); // Type à remplacer par le type adéquat cmdInsert.Parameters.Add("@nom", SqlDbType.VarChar, 50); // Type à remplacer par le type adéquat cmdInsert.Parameters.Add("@idparent", SqlDbType.Int); // Type à remplacer par le type adéquat cmdInsert.Parameters.Add("@metaSy", SqlDbType.Int); // Type à remplacer par le type adéquat // vérifie si la checkbox est coché if (ckb_idparent.Checked == true) { valeur1 = DBNull.Value; } else { valeur1 = idparent; } // récupèration des valeurs des paramètres cmdInsert.Parameters["@code"].Value = code; // val1 peut-être une variable cmdInsert.Parameters["@nom"].Value = nom; // .. cmdInsert.Parameters["@idparent"].Value = valeur1; cmdInsert.Parameters["@metaSy"].Value = metaSy; // connexion Connection.Open(); if (Connection.State == System.Data.ConnectionState.Open) // si la connexion est ouverte { // et on fait l'insertion cmdInsert.ExecuteNonQuery(); // fermeture connection Connection.Close(); } } }
Avez-vous une idée de comment je peux résoudre mon problème (mise à part changer le type de ma colonne) ?
En vous remerciant.
Partager