Java - Natural Join impossible?

Bonjour,

J’aimerai savoir si les natural join sont possible en Javaj , car j’ai fait cette requete :

s.executeQuery("SELECT [titre],[nom_dec],[nom_sign],[mail_sign],[date_dec] FROM bug NATURAL JOIN user where etat_bug = 'déclaré' ");

et ça me dit : java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans la clause FROM.

J’utilise Access, y’a t’il une manipulation particulière a faire sur Access pour pouvoir faire des Natural Join?? ( j’ai id dans ma table bug et id dans ma table user) donc je pensais que ca allait se faire automatiquement. . .

Merci d’avance
Edité le 08/05/2008 à 15:09

Et de cette manière ça ne marche pas non plus :

s.executeQuery("SELECT * FROM bug NATURAL LEFT JOIN user WHERE etat_bug = ‘affecté’ ");

L’utilisation du Java comme langage de programmation pour ton application n’a rien à voir avec la possibilité ou non d’effectuer un Natural Join : Java n’est que l’intérmédiaire qui va refiler la requête SELECT au moteur Access.
Essaie de voir quelle est la syntaxe correcte sous Access pour faire un Natural Join.

sinon tu as la syntaxe “classique”: LEFT JOIN T ON T.id = P.id …

Access n’avait pas l’air d’aimer les natural join , natural left join, j’ai donc fait un INNER JOIN. Pour ceux que ça intéresse , c’est de la forme :

s.executeQuery("SELECT * FROM  bug a  INNER JOIN user b ON( a.id = b.id) WHERE a.etat_bug = 'affecté'");

Autre question : Comment récupère t'on le contenu d'une jTable dans une cellule de coordonnée x,y. JE n'ai pas trouvé de méthode du style getCellContent(int x,int y) et j'aimerai bien avoir qqchsoe du style, si qqun connait la méthode :).

Merci d’avance !

java.sun.com… ??

sinon il faut calculer la cellule en fonction de la taille de chaque colonne et de chaque ligne.

Non c’est bon, j’essai maintenant d’interdire la modification d’une cellule ( en double cliquand ) ainsi qu’interdire le redimensionnement et le Drag and drop sur les colonne.

J’arrive pas a faire une classe qui redéfini isCellEditable . .

ça devrait t’aider un peu : java.sun.com…

J’ai tenté :

for(int i = 0; i < nbrcolonne ; i++)
{
for(int j = 0; j < jTable2.getRowCount(); j++)
{
jTable2.isCellEditable(j,i);
}
}

En ayant redéfini la méthode isCellEditable pour qu’elle retourne false. Mais ça ne marche toujours pas.

Ca dépend du table model ça

java.sun.com…

Par défaut, ça renvoie true.

Tu as pas 36 choix : tu dois changer le modèle qui renvoie false genre new DefaultTableModel() {public boolean isCellEditable(int i, intj) {return false}} sur le JTable. Ou interdire la sélection de cellule / ligne.

Bon ben j’ai toujours pas réussi, a faire le truc au dessus.

Par contre jai un autre problème :

je fais :

s.executeQuery("SELECT [nom_dec],[nom_sign],[mail_sign],[titre],[descript],[date_dec],[date_affect],[etat_bug] FROM bug Where [id_bug]= '"+nbug+"'  ");}
rs = s.getResultSet();
while(rs.next)
{
  for(i=0; i< 4; i++)
        {  
           infobug[i] = rs.getString(i+1); // car il me semble que ca commence à 1.
System.out.println(infobug[i]);
        }
}

Car je sais que mes 5 premiere colonne sont de type string, mais le Pirntln qu’il y a dans le for ne s’affiche pas , ça bug avant , mais pourquoi ?? Le tableau ne se rempli pas. . .

N’utilise pas getString(int), mais getString(String) :

rs.getString(“nom_dec”);

Cela te permettrait d’éviter des problèmes.

Non c’est bon j’ai reussi à faire ce que je voulais, et non , je n’utilisais pas de getString(String) , car la fonction que je fais est légèrement plus compliqué que ce que je montre au dessus, et donc j’ai absolument besoin de récupéré la ieme colonne de ma requete et de pouvoir travailler dessus, car suivant le cas, ma requete diffère :slight_smile:
Edité le 09/05/2008 à 19:42


Je souhaite rajouté une image au centre de ma Jframe, et je ne trouve pas comment faire .

Je connais la taille de ma fenêtre donc pas dur de la positionner.

Merci d’avance