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

PostgreSQL Discussion :

problème d'insetion dans postgreSQL


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut problème d'insetion dans postgreSQL
    bonjour a tous j'utilise eclipse pour me connecter a postgreSQL lorsque j'execute ma requette dans postgre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into "public"."Etudiant" (matricule,nom,prenom,sexe) values ('sefnvze','sdvre','zercze','vercd')
    sa marche très bien mais lorsque je copie et que je passe en parametre de la methode executQuery on m'affiche le message suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DRIVER OK ! 
    Connection effective !
    org.postgresql.util.PSQLException: ERREUR: erreur de syntaxe sur ou près de « 'public' »
      Position*: 13org.postgresql.util.PSQLException: ERREUR: erreur de syntaxe sur ou près de « 'public' »
      Position*: 13
    	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2101)
    	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1834)
    	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:510)
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:372)
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:252)
    	at monpackage.ConectDB.main(ConectDB.java:25)
    voila mon code:
    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
    package monpackage;
    import java.beans.Statement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.*;
    import java.util.Enumeration;
    import java.util.Properties;
     
    public class ConectDB {
    	public static void main(String[] args) {
     
    		try {
    			Class.forName("org.postgresql.Driver");
    			System.out.println("DRIVER OK ! ");
     
    			String url = "jdbc:postgresql://localhost:5432/Universite";
    			String user = "postgres";
    			String passwd = "keryjames";
     
    			Connection conn = DriverManager.getConnection(url, user, passwd);
    			System.out.println("Connection effective !");
     
    			java.sql.Statement state=conn.createStatement();
    			String req= "insert into 'public'.'Etudiant' (matricule,nom,prenom,sexe) values ('sefnvze','sdvre','zercze','vercd')";
    			state.executeQuery(req);
    		} catch (Exception e) {
    			e.printStackTrace();
    			System.out.print(e);
    		}		
    	}
    }

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,


    vos deux requêtes ne sont pas identique, vous avez transformé des " en '

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Par défaut
    oui c'est parce que lorsque je mets les double guillemets sa me génère une erreur dans mon code java

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bein votre erreur vient de là

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 997
    Billets dans le blog
    6
    Par défaut
    Ces doubles quote ne sont absolument pas nécessaires. Ce sont des merdouilles mise par précaution au cas ou le développeur débile n'aurait pas respecté la norme de nommage des objets de la base.
    A me lire : http://sqlpro.developpez.com/cours/s...age=partie1#L1

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Ces doubles quote ne sont absolument pas nécessaires. Ce sont des merdouilles mise par précaution au cas ou le développeur débile n'aurait pas respecté la norme de nommage des objets de la base.
    En l'occurrence ici puisque cette requête passe sans erreur dans un interpréteur SQL d'après la question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO "public"."Etudiant" (matricule,nom,prenom,sexe) VALUES ('sefnvze','sdvre','zercze','vercd')
    Ca veut dire que les guillemets autour d'Etudiant sont indispensables car la table a été créée avec un E majuscule.

    Le problème en pratique est généralement que les débutants créent des objets avec l'interface de PgAdmin avec des majuscules dans le nom pour faire joli sans se rendre compte qu'ils vont devoir mettre des guillemets dans toutes leurs requêtes à cause de ce choix.

    Une fois qu'on a compris le problème, le mieux est de renommer la table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE "Etudiant" RENAME TO etudiant;

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Citation Envoyé par junior222 Voir le message
    oui c'est parce que lorsque je mets les double guillemets sa me génère une erreur dans mon code java
    En java dans une chaîne litérale, tout comme en C ou C++, un guillemet doit être précédé d'un antislash quand ce guillemet n'est pas le terminateur de la chaîne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] problème d'insetion dans la base via formulaire
    Par japhettchabao dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/10/2014, 10h32
  2. [SQL] problème d'insetion dans la table de la base de données
    Par aroua dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/07/2007, 16h21
  3. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  4. problème de guillemets dans une formule shell
    Par dim_italia dans le forum VBA Access
    Réponses: 7
    Dernier message: 18/08/2003, 12h46
  5. Réponses: 1
    Dernier message: 04/06/2003, 11h48

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