Vous n'êtes pas identifié(e).
Pages : 1
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
É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
Le temps de trouver ou c'est loggué sous windows vista !
Hors ligne
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
Merci Marc,
grâce a toi, j'ai pu constater que le problème ne venais pas du WITH !
Tout marche impec.
Hors ligne
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
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
Julien.
https://rjuju.github.io/
En ligne
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
Pages : 1