IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

requete insert access


Sujet :

JDBC Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 154
    Par défaut requete insert access
    Bonjour,

    j'ai une appli où je cherche à inserer dans ma bdd une instance de "réponses"

    cependant j'ai une erreur que je n'arrive à résoudre :

    java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans l'instruction INSERT INTO.
    la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final String query ="insert into reponses values(,,"+answ+",'',,"+q.getId()+")";
    et les types de champs sont :

    (NuméroAuto,Numérique,Texte,Objet OLE,Numérique,Numérique)


    je vous poste l'erreur quand je met des cotes partout car elle est différente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final String query ="insert into reponses values('','',"+answ+",'','',"+q.getId()+")";
    java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 1 attendu.


    merci à vous

  2. #2
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String query ="insert into reponses(Texte,Numérique) values('"+answ+"','"+q.getId()+"') ";

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 154
    Par défaut
    Salut,

    merci pour ta réponse, ça fonctionne nikel
    j'avais le souvenir qu'on pouvait laisser des champs vide mais c'est probablement un souvenir érroné ^^

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 154
    Par défaut
    ah juste une question, si ma chaine de caractère contient une virgule, cela "coupe" la requete SQL, du coup il y aurait il un moyen que access n'interprete pas cela comme une virgule?

  5. #5
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "...values('"+answ+"','"+q.getId()+"')"
    //est différent de 
    "...values("+answ+","+q.getId()+")"
    Il me semble que les "simple quote : ' " sont là pour éviter ça.
    Autrement, utilise des PreparedStatement

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 154
    Par défaut
    pour illustrer mon problème :

    si je tape dans mon JtextArea:

    relativement bon, dans l'ensemble


    je genère cette erreure :

    java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression ''relativement bon, dans l'ensemble','2')'.



    ce n'est pas la virgule qui pose probleme mais la quote

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Bonjour,

    Comme là dit Ivelios, le mieux est d'utiliser les PreparedStatement.

    Sinon, je ne sais pas avec Access, mais dans certains SGBD, il faut double les simple quote pour que cela fonctionne. Je pense que c'est pareil.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    relativement bon, dans l''ensemble

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 154
    Par défaut
    hey c'est que ça marche en plus les double quotes lol

    je me suis tourné vers les prepared statement mais en fait j'ai toujour le même problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    final String query ="insert into reponses(reponse_commentaire,reponse_question_id) values(?,'"+q.getId()+"') ";	
    						pstmt = c.prepareStatement(query); 
    						pstmt.setString(1, answ); 
    						pstmt.executeUpdate();


    est ce que je ne serai pas obliger de parser ma chaine et de doubler les quotte lorsqu'il y en a?

  9. #9
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Citation Envoyé par jonathanC
    est ce que je ne serai pas obliger de parser ma chaine et de doubler les quotte lorsqu'il y en a?
    Tu peux faire un facile à mettre en place en plus

Discussions similaires

  1. Requete d'insertion access
    Par sambzh24 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 25/05/2008, 17h22
  2. Requete Insert vers table access distante
    Par Sam 069 dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/09/2007, 13h08
  3. VB6 access requete INSERT
    Par vodasan dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/06/2007, 18h46
  4. [VB.NET]Requete INSERT dans base de données access
    Par mael94420 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/10/2006, 14h57
  5. [VB .NET]Requete Insert vers une BD access
    Par Skunk007 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/04/2006, 19h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo