Requete insert qui ne fonctionne pas ????

Signaler
Messages postés
89
Date d'inscription
lundi 29 avril 2002
Statut
Membre
Dernière intervention
6 décembre 2006
-
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
-
bonjour,
j'essaye de faire une requete insert sur une base access en asp impeccable mais en asp.net j'ai le message d'erreur suivant :

Détails de l'exception: System.Data.OleDb.OleDbException: Erreur de syntaxe dans l'instruction INSERT INTO.

Erreur source:


Ligne 60 :      objCommand = New OleDbCommand(sql, objConnection)
Ligne 61 : 'ttt=objCommand.ExecuteReader()
Ligne 62 : 	  	 objCommand.ExecuteNonQuery()



et voici mon code

Dim connString,sql as String
connString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=d:\www\v1\data\action.mdb"
Dim objConnection as OleDbConnection
objConnection = New OleDbConnection(connString)
objConnection.Open() 'open the connection

sql="Insert Into Action (Id,RaisonSociale,DemandeurAction,PorteurAction)"
sql=sql & "values('XX1234','DUPONT',11,11)"


Dim objCommand as OleDbCommand
objCommand = New OleDbCommand(sql, objConnection)
objCommand.ExecuteNonQuery()

si quelqu'un peut m'éclairer

7 réponses

Messages postés
66
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
15 janvier 2008

je ne vois pas tres bien ou peut etre l'erreur peut etre les types de données mais fait un response.write sql


copie la requette du navigateur puis colle la dans ACCESS, tu verra surement l'erreur.
Messages postés
89
Date d'inscription
lundi 29 avril 2002
Statut
Membre
Dernière intervention
6 décembre 2006

c'est justement ce que j'ai fait en mettant la requete sur une page asp et ça passe impec, je me demandais justement si je n'avais pas omis des parametres d'acces à la base en asp.net en sachant que je n'ai pas de login/password à rentrer pour y accéder?????
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
Salut,

d'après ton code, ta variable sql va contenir ça :
"Insert Into Action (Id,RaisonSociale,DemandeurAction,PorteurAction)values('XX1234','DUPONT',11,11)"

Essaye plutôt comme ça :
"Insert Into Action (Id,RaisonSociale,DemandeurAction,PorteurAction) Values ('XX1234','DUPONT',11,11)"

A part ça, je vois pas vraiment d'erreurs...
Essaye plutôt d'utiliser les OleDbParameters plutôt que de mettre des valeurs en dur du genre "Values ('" & machin & "' ...etc, c'est beaucoup plus sécurisé, et en plus les parameters sont fortements typés et pourraient donc t'éviter ce genre d'erreurs...

Nurgle
Messages postés
89
Date d'inscription
lundi 29 avril 2002
Statut
Membre
Dernière intervention
6 décembre 2006

bonjour,
cela ne fonctionne pas non plus. J'ai du mal a comprendre pourquoi????
sinon tu peux me donner un exemple d'utilisation OleDbParameters???
je te remercie pour cet aide.
a+
sardonnen
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
Voilà, j'ai retrouvé le lien où c'est expliqué : http://webman.developpez.com/articles/aspnet/sqlparameter/vbnet/

Cette erreur peut aussi survenir si un de tes champs n'a pas le même type que la donnée que tu veux insérer dans ta base.
Vérifie donc bien que Id et RaisonSociale sont bien des chaines de caractères dans ta base et que les deux autre sont bien des valeurs numériques...
Néanmoins je te conseille quand même les Parameters, au moins pour clarifier le code et éviter les erreurs de syntaxe, et au mieux, pour renforcer la sécurité de ton application web (surtout contre les injections SQL...)

Nurgle
Messages postés
89
Date d'inscription
lundi 29 avril 2002
Statut
Membre
Dernière intervention
6 décembre 2006

je te remercie pour le lien, effectivement je vais le lire et essayer de l'appliquer très sérieusement car le coup du xxx;delete from table... est un peu effrayant pour un admin!!!

sinon j'ai revérifier en long en large et en travers la cohérence et la syntaxe mais nada toujours le même message d'erreur, est il possible de tester par une autre methode du genre addnew en ouvrant la table et en venant inserer une nouvelle ligne puis faire un update de la table????
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
L'autre méthode serait de charger dans un DataSet le shema de la table (par exemple, un Select ne retournant rien) et d'ajouter une ligne à ce dataset, puis de faire un update de ce dataset....
mais bon, ce serait quand même très moyen d'en arriver là......je comprend pas d'où viens l'erreur dans ta requête...
essaye aussi :
"Insert Into Action Values ('XX1234','DUPONT',11,11)"

(si évidemment ta table "Action" ne contient que ces 4 colonnes là, et dans cet ordre...)

Nurgle