elendila, dis nous au moins tes erreurs et a quelle ligne :P
Version imprimable
elendila, dis nous au moins tes erreurs et a quelle ligne :P
le truc c'est que si je met:
(c'est bien ça que tu veux dire??)Code:ObjCommand.Parameters.Add("@password", OleDbType.VarChar, tb_pass.Text.ToUpper());
J'ai une erreur du type:
Pour mon erreur principale c'est toujours la même depuis le début du post, je t'éclair:Citation:
The best overloaded method match for 'System.Data.OleDb.OleDbParameterCollection.Add(string, System.Data.OleDb.OleDbType, int)' has some invalid arguments
Sur la ligne:Citation:
System.Data.OleDb.OleDbException: Erreur de syntaxe dans l'instruction INSERT INTO.
Voilà voilà :)Citation:
ObjCommand.ExecuteNonQuery();
Code:
1
2 ObjCommand.Parameters.Add("@password", OleDbType.VarChar); ObjCommand.Parameters["@password"].Value=tb_pass.Text.ToUpper();
arf j'y ai cru mais non... toujours la même erreur... :cry:
Voila mes enregistrements à moi :
Adapte la avec tes champs. [/code]Code:
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 public static string Enregistrement(string id, string titre, string id_categorie, string description, string avec_ss_ss_cat) { string sql; if (id=="new") { sql="INSERT INTO ss_categorie (titre,id_categorie,description,avec_ss_ss_cat) VALUES (@titre,@id_categorie,@description,@avec_ss_ss_cat)"; } else { sql="UPDATE ss_categorie SET titre=@titre,id_categorie=@id_categorie,description=@description,avec_ss_ss_cat=@avec_ss_ss_cat WHERE id=@id"; } OleDbConnection OleDbConnect = new OleDbConnection(connStr); OleDbCommand Commande = new OleDbCommand(sql, OleDbConnect); Commande.Parameters.Add(new OleDbParameter("@titre",titre)); Commande.Parameters.Add(new OleDbParameter("@id_categorie",id_categorie)); Commande.Parameters.Add(new OleDbParameter("@description",description)); Commande.Parameters.Add(new OleDbParameter("@avec_ss_ss_cat",avec_ss_ss_cat)); Commande.Parameters.Add(new OleDbParameter("@id",id)); OleDbConnect.Open(); try { Commande.ExecuteNonQuery(); return("La base de données a bien été mise à jour."); } catch { return("Les données n'ont pas été enregistrées. Veuillez renouveler ultérieurement l'opération."); } finally { OleDbConnect.Close(); } }
Bon ben ça non plus ça ne marche pas... :(
Voilà mon code:
Et j'ai toujours la même erreur:Code:
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 string strCommand = "INSERT INTO person(connecte, nom, prenom, login, password, groupe) Values(@connecte, @nom, @prenom, @login, @password, @groupe)"; OleDbCommand ObjCommand = new OleDbCommand (strCommand, ObjConnect); ObjCommand.CommandType = CommandType.Text; ObjCommand.Parameters.Clear(); ObjCommand.Parameters.Add(new OleDbParameter ("@connecte",OleDbType.Integer)); ObjCommand.Parameters["@connecte"].Value = 1; ObjCommand.Parameters.Add(new OleDbParameter("@nom",OleDbType.VarChar)); ObjCommand.Parameters["@nom"].Value = tb_nom.Text.ToUpper(); ObjCommand.Parameters.Add(new OleDbParameter("@prenom",OleDbType.VarChar)); ObjCommand.Parameters["@prenom"].Value = tb_prenom.Text.ToUpper(); ObjCommand.Parameters.Add(new OleDbParameter("@login",OleDbType.VarChar)); ObjCommand.Parameters["@login"].Value = tb_login.Text.ToUpper(); ObjCommand.Parameters.Add(new OleDbParameter("@password",OleDbType.VarChar)); ObjCommand.Parameters["@password"].Value = tb_pass.Text.ToUpper(); ObjCommand.Parameters.Add(new OleDbParameter("@groupe",OleDbType.VarChar)); ObjCommand.Parameters["@groupe"].Value = ddl_groupe.SelectedValue; ObjCommand.ExecuteNonQuery();
Sur la ligne:Citation:
System.Data.OleDb.OleDbException: Erreur de syntaxe dans l'instruction INSERT INTO.
Code:ObjCommand.ExecuteNonQuery();
Rajoute .Replace("'","''"); a l'affectation de chaque chaine de caractère.
Comment ça un .Replace? Je vois pas ou il faut le mettre :?
J'ai également écrit un code de modification de base avec le code suivant:
et j'ai toujours un erreur sur la requeête mais cette fois un peu différente:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 string strCommand = "UPDATE person SET prenom = @prenom, login = @login, password = @password WHERE nom = @nom"; OleDbCommand ObjCommand = new OleDbCommand(strConnect, ObjConnect); ObjCommand.Parameters.Add(new OleDbParameter("@prenom", tb_prenom.Text.ToUpper())); ObjCommand.Parameters.Add(new OleDbParameter("@login", tb_login.Text.ToUpper())); ObjCommand.Parameters.Add(new OleDbParameter("@password", tb_pass.Text.ToUpper())); ObjCommand.Parameters.Add(new OleDbParameter("@groupe", ddl_groupe.SelectedValue)); ObjCommand.ExecuteNonQuery();
alors que ma requête commence bien par un UPDATE donc je sais pas, j'ai un gros soucis mais je vois vraiment d'ou ça peut venir... :cry:Citation:
System.Data.OleDb.OleDbException: Instruction SQL non valide; 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' ou 'UPDATE' attendus.
arf je retire, je m'étais trompé dans les paramètres, en fait j'ai exactement la même erreur mais avec le UPDATE cette fois:
Voilà, c'est pas mieux... :(Code:System.Data.OleDb.OleDbException: Erreur de syntaxe dans l'instruction UPDATE
Ce ne sont que des erreurs de syntaxe SQL.
Tu fais :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 try { string strCommand = "UPDATE person SET prenom = @prenom, login = @login, password = @password WHERE nom = @nom"; OleDbCommand ObjCommand = new OleDbCommand(strConnect, ObjConnect); ObjCommand.Parameters.Add(new OleDbParameter("@prenom", tb_prenom.Text.ToUpper())); ObjCommand.Parameters.Add(new OleDbParameter("@login", tb_login.Text.ToUpper())); ObjCommand.Parameters.Add(new OleDbParameter("@password", tb_pass.Text.ToUpper())); ObjCommand.Parameters.Add(new OleDbParameter("@groupe", ddl_groupe.SelectedValue)); Response.Write("Requete : "+ObjCommand.CommandText+"<br/>"); foreach (OleDbParameter param in ObjCommand.Parameters) Response.Write(param.Name+" : "+param.Value+"<br/>"); ObjCommand.ExecuteNonQuery(); }//try catch (Exception ex) { Response.Write("Erreur : "+ex.Message); }//catch
personne essaye mon truc.. car ça marche très bien. :x :roll:
SiSi j'ai essayé ton code Lespalom et ça marche pas. Regarde mes post j'ai bien changé pour faire comme toi et j'ai tjs et encore cette maudite erreur....
Pour ce qui est de ton code d'essaye BiMouXeTTe je l'ai testé, il n'y a que le catch qui ne passe pas:
C'est un paramètre que je dois initialiser ou??Citation:
The type or namespace name 'ex' could not be found (are you missing a using directive or an assembly reference?)
Sinon j'ai essayé sans et je rentre bien dans la boucle foreach mais 1 seule fois, pour le nom. Par contre ça me l'affiche bien.
Voilà l'affichage:
et ça sort (c'est donc sensé passer dans le catch)Citation:
Requete : UPDATE person SET prenom = '@prenom', login = '@login', password = '@password' WHERE nom = '@nom'
@prenom : BRUNO
Voilà voilà, en tout cas merci de votre aide parce que là j'avoue que je n'en voit plus la fin! :wink:
t'as bien ajouté System.Data.OleDb ???
Tu as bien mis Exception devant ex ?
Je suppose que tous tes champs sont des VarChar sinon change le type.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 try { string strCommand = "UPDATE person SET prenom = @prenom, login = @login, password = @password WHERE nom = @nom"; OleDbCommand ObjCommand = new OleDbCommand(strConnect, ObjConnect); ObjCommand.Parameters.Add(new OleDbParameter("@prenom", OleDbType.VarChar)); ObjCommand.Parameters.Add(new OleDbParameter("@login", OleDbType.VarChar)); ObjCommand.Parameters.Add(new OleDbParameter("@password", OleDbType.VarChar)); ObjCommand.Parameters.Add(new OleDbParameter("@groupe", OleDbType.VarChar)); Response.Write("Requete : "+ObjCommand.CommandText+"<br/>"); foreach (OleDbParameter param in ObjCommand.Parameters) Response.Write(param.Name+" : "+param.Value+"<br/>"); ObjCommand.Parameters["@prenom"].Value=tb_prenom.Text.ToUpper(); ObjCommand.Parameters["@login"].Value=tb_login.Text.ToUpper(); ObjCommand.Parameters["@password"].Value=tb_pass.Text.ToUpper(); ObjCommand.Parameters["@groupe"].Value=ddl_groupe.SelectedValue; ObjCommand.ExecuteNonQuery(); }//try catch (Exception ex) { Response.Write("Erreur : "+ex.Message); }//catch
Envoi moi ton projet par e-mail. Je vais essayer de regarder.
A oui ça marche mieux de suite mais j'ai toujours la même erreur:
J'ai pas ton @ mail Lespalom et si je t'envoye un mail via le forum je ne peux pas joindre mes pages donc si tu peux me la filer... Merci beaucoup en tout cas!! Par contre je ne pourrais pas te passer la table correspondante vu que je boss dans une boite... :SCitation:
Erreur : Erreur de syntaxe dans l'instruction UPDATE.
voilà :)
Salut,
contact@lespalombes.com.
Envoi moi une base de données avec la même structure de la table concernée, mais sans les données dedans ;).
j'ai repris le code avec les @ et franchement ca ne fonctionne pas. celui avec les ? lui oui. tu as essayé cette solution finalement?
oui j'ai essayé et ça ne marchait pas non plus :(