PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 04/04/2011 15:37:59

meles
Membre

JDBC et WITH ... SELECT

Bonjour,
  dans une application java (Eclipse BIRT) utilisant jdbc pour attaquer ma bdd (postgresql 9.0.2), je n'arrive pas a écrire une requete de la forme

 with temp as (select col1, col2 from plop) select * from temp

alors que la forme

select * from (select col1, col2 from plop) as temp

passe sans problème.

J'obtiens l'erreur suivante :

Caused by: org.postgresql.util.PSQLException: ERREUR: erreur de syntaxe sur ou près de « select »

Est-ce un pb connu avec JDBC ?

Je suis un peu perdu.

Cordialement

Hors ligne

#2 04/04/2011 15:45:37

Marc Cousin
Membre

Re : JDBC et WITH ... SELECT

Étrange. Aucune idée de si le driver JDBC essaye d'analyser la requête. Par défaut, les requêtes ayant des erreurs de syntaxe sont tracées dans la log de PostgreSQL. Est-ce que celle-ci apparaît ?


Marc.

Hors ligne

#3 04/04/2011 16:04:17

meles
Membre

Re : JDBC et WITH ... SELECT

Le temps de trouver ou c'est loggué sous windows vista !

Hors ligne

#4 04/04/2011 16:11:07

Marc Cousin
Membre

Re : JDBC et WITH ... SELECT

Dans le répertoire où est installé Postgres (ou l'instance, si vous avez choisi un répertoire différent pour elle au moment de l'installation). Il y a un sous-répertoire pg_log, avec des noms de fichiers relatifs à la date de démarrage de l'instance.


Marc.

Hors ligne

#5 04/04/2011 16:30:31

meles
Membre

Re : JDBC et WITH ... SELECT

Merci Marc,
  grâce a toi, j'ai pu constater que le problème ne venais pas du WITH !

Tout marche impec.

Hors ligne

#6 12/01/2016 00:25:43

VERONIQUE
Membre

Re : JDBC et WITH ... SELECT

Bonsoir,

J'espère que je suis sur le bon forum, c'est la première fois que je viens sur ce forum.
Je n'arrive pas à trouver l'erreur dans ce programme qui me m'est: Attention Driver not found , svp pouvez m'aider ?
J'aie donc pris comme Base de donnée progreSQL.


public class FDirection  extends JFrame {
    public static JTextField txtNom = new JTextField ();
    JPasswordField passField = new JPasswordField();
    Choice chcCat = new Choice ();
   
       
private static    String url = "jdbc:postgresql://locahost:5432/Ecole";
private static    String user = "postgres";
private static    String password  = "xxxxx";
   
    String strNom = "" ;
    String strPassword;
    String strCategorie;
    int NombreEnregistrement = 0;
   
    static Statement staQuery;
    static ResultSet rstDirect;
    static Connection conDB;
       
    public static FDirection  dir;
    public static FBienvenue bie;
    public FDirection () {
        init ();
    }

    public static void main(String[] args) {
        dir = new FDirection ();

    }
   
public void init () {
    this.setSize(400, 300);
    this.setTitle("LA DIRECTION");
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    this.setLocation(dim.width / 2 - this.getWidth() / 2, dim.height / 2 - this.getHeight() / 2);
   
    JLabel jlNom = new JLabel ("Nom");
    JLabel jlPassword = new JLabel ("Password");
    JLabel jlCat = new JLabel ("Catégories");
    Choice chcCat = new Choice ();
    JTextField txtNom = new JTextField ();
    //JTextField txtPassword = new JTextField () ;
    JButton cmdOK = new JButton ("OK");
    JButton cmdAnnuler = new JButton ("Annuler");
    JButton cmdQuitter = new JButton ("Quitter");
    this.getContentPane().setLayout(null);
    jlNom.setBounds(50, 50, 100, 50);
    jlPassword.setBounds(50, 100, 100, 50);
    jlCat.setBounds(50, 150, 100, 50);
    this.getContentPane().add(jlNom);
    this.getContentPane().add(jlPassword);
    this.getContentPane().add(jlCat);
    chcCat.setBounds(150, 150, 100, 50);
    this.getContentPane().add(chcCat);
    chcCat.addItem("Direction");
    chcCat.addItem("Secrétaires");
    txtNom.setBounds(150, 50, 100, 20);
    this.getContentPane().add(txtNom);
    passField.setBounds(150, 100, 100, 20);
    this.getContentPane().add(passField);
    cmdOK.setBounds(30, 220, 100, 20);
    this.getContentPane().add(cmdOK);
    cmdAnnuler.setBounds(150, 220, 100, 20);
    this.getContentPane().add(cmdAnnuler);
    cmdQuitter.setBounds(270, 220, 100, 20);
    this.getContentPane().add(cmdQuitter);
    this.setVisible(true);
   


     try {
       
         Class.forName("org.postgresql.Driver");
        
    }
   
    
    catch (ClassNotFoundException cnfe){
        System.out.println("Driver not found");
    }
   
    
        
     try {
        
                                             
        conDB = DriverManager.getConnection(url + user +  password );// Connexion à la DB
         //Création d'un objet
         staQuery = conDB.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
        
       
         rstDirect = staQuery.executeQuery("SELECT FROM * categories");
         while (rstDirect.next());
         chcCat.addItem(rstDirect.getString(1));
         rstDirect.close();
     }
     catch (SQLException sql) {
         System.out.println("Attention DRIVER not found");
     }
   
   
    
     cmdOK.addActionListener(new ActionListener () {
        public void actionPerformed (ActionEvent e){
           
                   
           
            try {
               
                                        
                strNom = txtNom.getText(); // Voir si ca existe ds le TextField
                char cha[] = passField.getPassword();
                strPassword = new String (cha);
                strCategorie = chcCat.getSelectedItem();
                conDB = DriverManager.getConnection(url + user +  password );// Connexion à la DB
                 staQuery = conDB.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
               
                rstDirect = staQuery.executeQuery("SELECT * FROM employes  WHERE em_nom = '"+strNom+ "'");
                rstDirect.next();
                NombreEnregistrement = rstDirect.getRow();                      
             
       
                  
           
            }
            catch (SQLException sql) {
               
            }
           
            try {
               
                  
                    if (strNom.equals("")) {
                    JOptionPane.showMessageDialog(FDirection.this, "Attention il faut mettre un nom ! ", "OK", JOptionPane.OK_CANCEL_OPTION);
                }
                else if (NombreEnregistrement == 1) {
                   
                        if (strPassword.equals(rstDirect.getString("em_password")) && (strCategorie.equals(rstDirect.getString("em_categorie")))){
                           
                                                    }
                        else {
                            JOptionPane.showMessageDialog(FDirection.this, "Attention, le nom du password ou la catégorie est faux ! ", "OK", JOptionPane.OK_CANCEL_OPTION);
                            txtNom.setText("");
                            passField.setText("");
                        }
                    
                    }
                }
       
        catch (SQLException sql) {}
        }
   
        });
           
                                                                                                              
   
           
      
   
   
}
}

Hors ligne

#7 12/01/2016 00:48:43

rjuju
Administrateur

Re : JDBC et WITH ... SELECT

Soit vous n'avez pas installé le driver jdbc, soit il n'est pas présent dans le class path. cf : https://jdbc.postgresql.org/documentati … spath.html

En ligne

#8 12/01/2016 01:12:09

VERONIQUE
Membre

Re : JDBC et WITH ... SELECT

Merci, ca va aussi si j'aie ajouté le fichier jar dans librairie

Dernière modification par VERONIQUE (12/01/2016 01:13:34)

Hors ligne

Pied de page des forums